diff --git a/src/OpenFOAM/primitives/VectorSpace/VectorSpaceOps.H b/src/OpenFOAM/primitives/VectorSpace/VectorSpaceOps.H index 6af5c9f028..1ec488c9cb 100644 --- a/src/OpenFOAM/primitives/VectorSpace/VectorSpaceOps.H +++ b/src/OpenFOAM/primitives/VectorSpace/VectorSpaceOps.H @@ -39,42 +39,29 @@ namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +//- General looping form. Executing at index \ with termination at \ template -class VectorSpaceOps +struct VectorSpaceOps { -public: - - //- End for next loop. Is 0 for loop termination. - static constexpr direction loopN() noexcept - { - return (I+1 < N) ? N : 0; - } - - //- Index for next loop. Is 0 for loop termination. - static constexpr direction loopI1() noexcept - { - return (I+1 < N) ? I+1 : 0; - } - template static inline void eqOpS(V& vs, const S& s, EqOp eo) { eo(vs.v_[I], s); - VectorSpaceOps::eqOpS(vs, s, eo); + VectorSpaceOps::eqOpS(vs, s, eo); } template static inline void SeqOp(S& s, const V& vs, EqOp eo) { eo(s, vs.v_[I]); - VectorSpaceOps::SeqOp(s, vs, eo); + VectorSpaceOps::SeqOp(s, vs, eo); } template static inline void eqOp(V1& vs1, const V2& vs2, EqOp eo) { eo(vs1.v_[I], vs2.v_[I]); - VectorSpaceOps::eqOp(vs1, vs2, eo); + VectorSpaceOps::eqOp(vs1, vs2, eo); } @@ -82,55 +69,46 @@ public: static inline void opVS(V& vs, const V1& vs1, const S& s, Op o) { vs.v_[I] = o(vs1.v_[I], s); - VectorSpaceOps::opVS(vs, vs1, s, o); + VectorSpaceOps::opVS(vs, vs1, s, o); } template static inline void opSV(V& vs, const S& s, const V1& vs1, Op o) { vs.v_[I] = o(s, vs1.v_[I]); - VectorSpaceOps::opSV(vs, s, vs1, o); + VectorSpaceOps::opSV(vs, s, vs1, o); } template static inline void op(V& vs, const V1& vs1, const V1& vs2, Op o) { vs.v_[I] = o(vs1.v_[I], vs2.v_[I]); - VectorSpaceOps::op(vs, vs1, vs2, o); + VectorSpaceOps::op(vs, vs1, vs2, o); } }; -//- Specialization for loop termination of vector space ops -template<> -class VectorSpaceOps<0, 0> +//- Loop termination form, when index and loop count \ are identical +template +struct VectorSpaceOps { -public: - template - static inline void eqOpS(V&, const S&, EqOp) - {} + static inline void eqOpS(V&, const S&, EqOp) {} template - static inline void SeqOp(S&, const V&, EqOp) - {} + static inline void SeqOp(S&, const V&, EqOp) {} template - static inline void eqOp(V1&, const V2&, EqOp) - {} - + static inline void eqOp(V1&, const V2&, EqOp) {} template - static inline void opVS(V& vs, const V1&, const S&, Op) - {} + static inline void opVS(V& vs, const V1&, const S&, Op) {} template - static inline void opSV(V& vs, const S&, const V1&, Op) - {} + static inline void opSV(V& vs, const S&, const V1&, Op) {} template - static inline void op(V& vs, const V1&, const V1&, Op) - {} + static inline void op(V& vs, const V1&, const V1&, Op) {} };