inline ABObj<MT,MAT1,T>
operator-(
const ABObj<MT,MAT1,T>& m) {\
return ABObj<MT,MAT1,T> (m.Obj(), T(-1.)*m.f());\
}\
\
inline ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T>
operator+(
const ABObj<MT,MAT1,T>& a,
const ABObj<MT,MAT1,T>& b) { \
return ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T>(ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >(a, b)); \
} \
inline ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T>
operator-(
const ABObj<MT,MAT1,T>& a,
const ABObj<MT,MAT1,T>& b) { \
return ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T>(ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >(a,ABObj<MT,MAT1,T> (b.Obj(),T(-1.)*b.f()))); \
}
ABObj< mt, M, T > operator-(const M &obj)
ABObj< typename AlgebraicSumType< atype, btype >::Type, ABSum< ABObj< atype, A, T >, ABObj< btype, B, T > >, T > operator+(const ABObj< atype, A, T > &a, const ABObj< btype, B, T > &b)