\
template < class T1, class T2, unsigned D > \
OP(const TSV<T1,D> &lhs, const TSV<T2,D> &rhs) \
{ \
TSV_ELEMENTWISE_OPERATOR_WITH_SCALAR(TSV,int,OP,APP) \
TSV_ELEMENTWISE_OPERATOR_WITH_SCALAR(TSV,unsigned int,OP,APP) \
TSV_ELEMENTWISE_OPERATOR_WITH_SCALAR(TSV,long,OP,APP) \
TSV_ELEMENTWISE_OPERATOR_WITH_SCALAR(TSV,float,OP,APP) \
TSV_ELEMENTWISE_OPERATOR_WITH_SCALAR(TSV,double,OP,APP) \
TSV_ELEMENTWISE_OPERATOR_WITH_SCALAR(TSV,std::complex<double>,OP,APP)
#define TSV_ELEMENTWISE_OPERATOR_WITH_SCALAR(TSV, SCA, OP, APP)
boost::function< boost::tuple< double, bool >(arguments_t)> type