1 #ifndef TIL_TEXPR_NUMERICAL_FUNCTORS_H 2 #define TIL_TEXPR_NUMERICAL_FUNCTORS_H 12 #include "boost/type_traits.hpp" 13 #include "boost/call_traits.hpp" 21 namespace til {
namespace expr {
namespace functor {
40 template <
template <
typename>
class TOperator >
43 template <
typename T,
typename TUnused = T >
struct TypeStruct 45 typedef typename TOperator<T>::result_type
Type;
48 template <
typename T >
52 typename TOperator<T>::result_type
56 return TOperator<T>()(x);
60 template <
typename T >
65 typename TOperator<T>::result_type
70 return TOperator<T>()(x,y);
96 template <
template <
typename>
class TOperator >
99 template <
typename T,
typename TUnused = T >
struct TypeStruct 101 typedef typename TOperator<T>::result_type
Type;
104 template <
typename T >
109 typename TOperator<T>::result_type
113 return TOperator<T>()(x,y);
127 template <
template <
typename,
typename>
class TOperator >
132 typedef typename TOperator<T1,T2>::result_type
Type;
135 template <
typename T1,
typename T2 >
140 typename TOperator<T1,T2>::result_type
144 return TOperator<T1,T2>()(x,y);
147 template <
typename T1,
typename T2 >
148 typename TOperator<T1,T2>::result_type
151 return TOperator<T1,T2>()(x,y);
166 template <
template <
typename,
typename,
typename>
class T >
169 template <
typename T1,
typename T2 >
170 struct type :
public T<T1,T2,typename combine<T1,T2>::type> {};
226 template <
typename TTo >
229 template <
typename TFrom >
250 template <
typename T,
bool b >
252 {
typedef typename T::result_type
type; };
254 template <
typename T >
271 template <
typename TFunctor >
281 Wrap(TFunctor & f) : TFunctor(f) {}
DetemplateOperator1< std::not_equal_to > Not_Equal_To
TOperator< T1, T2 >::result_type operator()(T1 &x, const T2 &y) const
DetemplateOperator2< til::functor::Call > Call
DetemplateOperator2< til::functor::SubTo > SubTo
TOperator< T >::result_type Type
DetemplateAssignOperator1< til::functor::Assign > Assign
DetemplateOperator2< DefaultThird< til::functor::Div >::type > Divides
DetemplateOperator2< til::functor::CastTo > CastTo
TOperator< T >::result_type operator()(const T &x, const T &y) const
DetemplateOperator1< til::functor::Sqrt > Sqrt
TTo operator()(TFrom a) const
Belongs to package Box Do not include directly, include til/Box.h instead.
DetemplateOperator1< std::less > Less
TOperator< T1, T2 >::result_type Type
TOperator< T >::result_type operator()(T &x, const T &y) const
DetemplateOperator2< til::functor::MulTo > MulTo
DetemplateOperator2< DefaultThird< til::functor::Add >::type > Plus
Wrap a standard functor inside a detemplated functor.
Defines empty classes that serves as labels.
DetemplateOperator1< std::greater_equal > Greater_Equal
DetemplateOperator1< til::functor::Abs > Abs
DetemplateOperator2< DefaultThird< til::functor::Sub >::type > Minus
Detemplation of assignment functors taking one template parameter.
TOperator< T >::result_type Type
DetemplateOperator1< std::less_equal > Less_Equal
DetemplateOperator1< std::greater > Greater
A class to "detemplate" a stateless operator with a single template argument.
DetemplateOperator1< std::negate > Negate
A class to replace the third (result) template parameter of a functor by a default value...
DetemplateOperator1< std::equal_to > Equal_To
detail::WrapReturnValue< TFunctor, has_result_type< TFunctor >::value >::type Type
A class to "detemplate" a pure functor with two template arguments.
DetemplateOperator1< til::functor::Deref > Deref
TOperator< T >::result_type operator()(const T &x) const
DetemplateOperator2< til::functor::AddTo > AddTo
TOperator< T1, T2 >::result_type operator()(const T1 &x, const T2 &y) const
DetemplateOperator2< DefaultThird< til::functor::Mul >::type > Multiplies
DetemplateOperator2< til::functor::DivTo > DivTo