_Name
#define _DEFINE_VALARRAY_UNARY_OPERATOR(_Op, _Name) \
inline _Expr<_UnClos<_Name,_ValArray,_Tp>, _Tp> \
#define _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(_Op, _Name) \
_Array_augmented_##_Name (_Array<_Tp>(_M_data), _M_size, __t); \
_Array_augmented_##_Name (_Array<_Tp>(_M_data), _M_size, \
#define _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(_Op, _Name) \
_Array_augmented_##_Name (_Array<_Tp>(_M_data), __e, _M_size); \
#define _DEFINE_BINARY_OPERATOR(_Op, _Name) \
inline _Expr<_BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp>, _Tp> \
inline _Expr<_BinClos<_Name,_ValArray,_Constant,_Tp,_Tp>,_Tp> \
inline _Expr<_BinClos<_Name,_Constant,_ValArray,_Tp,_Tp>,_Tp> \
#define _DEFINE_LOGICAL_OPERATOR(_Op, _Name) \
inline _Expr<_BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp>,bool> \
inline _Expr<_BinClos<_Name,_ValArray,_Constant,_Tp,_Tp>,bool> \
inline _Expr<_BinClos<_Name,_Constant,_ValArray,_Tp,_Tp>,bool> \
#define _DEFINE_ARRAY_FUNCTION(_Op, _Name) \
_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, const _Tp& __t) \
_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, _Array<_Tp> __b) \
_Array_augmented_##_Name (_Array<_Tp> __a, \
_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, size_t __s, \
_Array_augmented_##_Name (_Array<_Tp> __a, _Array<_Tp> __b, \
_Array_augmented_##_Name (_Array<_Tp> __a, size_t __s, \
_Array_augmented_##_Name (_Array<_Tp> __a, _Array<size_t> __i, \
_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, \
_Array_augmented_##_Name (_Array<_Tp> __a, _Array<size_t> __i, \
_Array_augmented_##_Name (_Array<_Tp> __a, _Array<bool> __m, \
_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, \
_Array_augmented_##_Name (_Array<_Tp> __a, _Array<bool> __m, \
_Name (const typename _Dom::value_type& __t, \
(_Closure (__t, __e (), (_Tp(*)(_Tp, _Tp))(&_Name))); \
_Name (const valarray<_Tp>& __v, const valarray<_Tp>& __w) \
(_Closure (__v, __w, (_Tp(*)(_Tp,_Tp))(&_Name))); \
_Name (const valarray<_Tp>& __v, const _Tp& __t) \
(_Closure (__v, __t, (_Tp(*)(_Tp,_Tp))(&_Name))); \
_Name (const _Tp& __t, const valarray<_Tp>& __v) \
(_Closure (__t, __v, (_Tp(*)(_Tp,_Tp))(&_Name))); \
#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \
inline _Expr<_UnClos<_Name,_Expr,_Dom>,_Tp> \
#define _DEFINE_EXPR_BINARY_OPERATOR(_Op, _Name) \
inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, \
typename _Name<typename _Dom1::value_type>::result_type> \
typedef typename _Name<_Arg>::result_type _Value; \
inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>, \
typename _Name<typename _Dom::value_type>::result_type> \
typedef typename _Name<_Arg>::result_type _Value; \
inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>, \
typename _Name<typename _Dom::value_type>::result_type> \
typedef typename _Name<_Arg>::result_type _Value; \
inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>, \
typename _Name<typename _Dom::value_type>::result_type> \
typedef typename _Name<_Arg>::result_type _Value; \
inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>, \
typename _Name<typename _Dom::value_type>::result_type> \
typedef typename _Name<_Tp>::result_type _Value; \
#define _DEFINE_EXPR_RELATIONAL_OPERATOR(_Op, _Name) \
inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, bool> \
inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>, \
inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>, \
inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>, \
inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>, \
#define _DEFINE_EXPR_UNARY_FUNCTION(_Name) \
_Name(const _Expr<_Dom,typename _Dom::value_type>& __e) \
return _Expr<_Closure,_Tp>(_Closure(__e(), (_Tp(*)(_Tp))(&_Name))); \
_Name(const valarray<_Tp>& __v) \
return _Expr<_Closure,_Tp> (_Closure (__v, (_Tp(*)(_Tp))(&_Name))); \
#define _DEFINE_EXPR_BINARY_FUNCTION(_Name) \
_Name (const _Expr<_Dom1,typename _Dom1::value_type>& __e1, \
(_Closure (__e1 (), __e2 (), (_Tp(*)(_Tp, _Tp))(&_Name))); \
_Name (const _Expr<_Dom,typename _Dom::value_type>& __e, \
(_Closure (__e (), __v, (_Tp(*)(_Tp, _Tp))(&_Name))); \
_Name (const valarray<typename _Dom::valarray>& __v, \
(_Closure (__v, __e (), (_Tp(*)(_Tp, _Tp))(&_Name))); \
_Name (const _Expr<_Dom, typename _Dom::value_type>& __e, \
(_Closure (__e (), __t, (_Tp(*)(_Tp, _Tp))(&_Name))); \