_Op
#define _DEFINE_VALARRAY_UNARY_OPERATOR(_Op, _Name) \
valarray<_Tp>::operator##_Op() const \
#define _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(_Op, _Name) \
valarray<_Tp>::operator##_Op##= (const _Tp &__t) \
valarray<_Tp>::operator##_Op##= (const valarray<_Tp> &__v) \
#define _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(_Op, _Name) \
valarray<_Tp>::operator##_Op##= (const _Expr<_Dom,_Tp> &__e) \
#define _DEFINE_BINARY_OPERATOR(_Op, _Name) \
operator##_Op (const valarray<_Tp> &__v, const valarray<_Tp> &__w) \
operator##_Op (const valarray<_Tp> &__v, const _Tp &__t) \
operator##_Op (const _Tp &__t, const valarray<_Tp> &__v) \
#define _DEFINE_LOGICAL_OPERATOR(_Op, _Name) \
operator##_Op (const valarray<_Tp> &__v, const valarray<_Tp> &__w) \
operator##_Op (const valarray<_Tp> &__v, const _Tp &__t) \
operator##_Op (const _Tp &__t, const valarray<_Tp> &__v) \
#define _DEFINE_ARRAY_FUNCTION(_Op, _Name) \
*__p _Op##= __t; \
*__p _Op##= *__q; \
for (size_t __i=0; __i<__n; ++__i, ++__p) *__p _Op##= __e[__i]; \
*__p _Op##= *__q; \
*__p _Op##= *__q; \
for (size_t __i=0; __i<__n; ++__i, __p+=__s) *__p _Op##= __e[__i]; \
__a._M_data[*__j] _Op##= *__q; \
*__p _Op##= __b._M_data[*__j]; \
__a._M_data[*__j] _Op##= __e[__k]; \
*__p _Op##= *__q; \
*__p _Op##= *__q; \
*__p _Op##= __e[__i]; \
typedef typename _Op::result_type value_type;
{ return _Op() (_M_expr[__i]); }
typedef typename _Op::result_type value_type;
{ return _Op() (_M_expr1[__i], _M_expr2[__i]); }
typedef typename _Op::result_type value_type;
{ return _Op() (_M_expr1[__i], _M_expr2); }
typedef typename _Op::result_type value_type;
{ return _Op() (_M_expr1, _M_expr2[__i]); }
#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \
_Expr<_Dom,_Tp>::operator##_Op () const \
#define _DEFINE_EXPR_BINARY_OPERATOR(_Op, _Name) \
operator##_Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \
operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \
operator##_Op (const typename _Dom::value_type& __t, \
operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \
operator##_Op (const valarray<typename _Dom::value_type>& __v, \
#define _DEFINE_EXPR_RELATIONAL_OPERATOR(_Op, _Name) \
operator##_Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \
operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \
operator##_Op (const typename _Dom::value_type& __t, \
operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \
operator##_Op (const valarray<typename _Dom::value_type>& __v, \