9 #if VARIABLE_NUM_ARGS == VARIABLE_MAX_ARGS
11 template <
class Fun1,
class Fun2 >
15 Chainer_Base(
const Fun1& f1,
const Fun2& f2 ):mF1( f1 ), mF2( f2 ){};
19 return equality( Int2Type< Conversion<F, Chainer_Base<Fun1,Fun2> >::exists >(),ob2 );
23 bool equality( Int2Type<false>,
const F&)
const
27 bool equality( Int2Type<true >,
const Chainer_Base<Fun1,Fun2>& ob2)
const
30 return mel::mpl::equal<true>( mF1, ob2.mF1 ) &&::mel::mpl::equal<true>( mF2,ob2.mF2 );
39 template <
class Fun1,
class Fun2,VARIABLE_ARGS >
class Chainer :
public Chainer_Base<Fun1,Fun2>
42 Chainer(
const Fun1& f1,
const Fun2& f2 ): Chainer_Base<Fun1,Fun2>(f1,f2)
46 void operator()( VARIABLE_ARGS_IMPL )
48 Chainer_Base<Fun1,Fun2>::mF1( VARIABLE_ARGS_USE );
49 Chainer_Base<Fun1,Fun2>::mF2( VARIABLE_ARGS_USE );
54 template <
class Fun1,
class Fun2>
55 class Chainer<Fun1,Fun2> :
public Chainer_Base<Fun1,Fun2>
58 Chainer(
const Fun1& f1,
const Fun2& f2 ): Chainer_Base<Fun1,Fun2>(f1,f2)
63 Chainer_Base<Fun1,Fun2>::mF1( );
64 Chainer_Base<Fun1,Fun2>::mF2( );
68 template <VARIABLE_ARGS_NODEFAULT,
class F1,
class F2>
69 Chainer<F1,F2,VARIABLE_ARGS_DECL> chain( F1 f1, F2 f2 )
71 return Chainer<F1,F2,VARIABLE_ARGS_DECL>(f1,f2);
75 template <
class Fun1,
class Fun2,VARIABLE_ARGS >
76 class Chainer<Fun1,Fun2,VARIABLE_ARGS_DECL,void> :
public Chainer_Base<Fun1,Fun2>
79 Chainer(
const Fun1& f1,
const Fun2& f2 ): Chainer_Base<Fun1,Fun2>(f1,f2)
83 void operator()( VARIABLE_ARGS_IMPL )
85 Chainer_Base<Fun1,Fun2>::mF1( VARIABLE_ARGS_USE );
86 Chainer_Base<Fun1,Fun2>::mF2( VARIABLE_ARGS_USE );
89 template <VARIABLE_ARGS,
class F1,
class F2>
90 Chainer<F1,F2,VARIABLE_ARGS_DECL> chain( F1 f1, F2 f2 )
92 return Chainer<F1,F2,VARIABLE_ARGS_DECL>(f1,f2);
Definition: FunctorImpl.h:40
Small operator==(const AnyType &, const AnyType &)
Definition: Callback_Impl.h:11