template<class _Dom> \
inline _Expr<_UnFunClos<_Expr,_Dom>,typename _Dom::value_type> \
_Name(const _Expr<_Dom,typename _Dom::value_type>& __e) \
{ \
typedef typename _Dom::value_type _Tp; \
typedef _UnFunClos<_Expr,_Dom> _Closure; \
return _Expr<_Closure,_Tp>(_Closure(__e(), (_Tp(*)(_Tp))(&_Name))); \
} \
\
template<typename _Tp> \
inline _Expr<_UnFunClos<_ValArray,_Tp>,_Tp> \
_Name(const valarray<_Tp>& __v) \
{ \
typedef _UnFunClos<_ValArray,_Tp> _Closure; \
return _Expr<_Closure,_Tp> (_Closure (__v, (_Tp(*)(_Tp))(&_Name))); \
}