6 #if VARIABLE_NUM_ARGS == VARIABLE_MAX_ARGS
9 template <
class T,
class TRet,
class NewArg>
13 ParamAdder_Base( T&& functor ):mFunctor( std::forward<T>(functor) ){};
17 return equality( Int2Type< Conversion<F, ParamAdder_Base<T,TRet,NewArg> >::exists >(),ob2 );
21 bool equality( Int2Type<false>,
const F&)
const
25 bool equality( Int2Type<true >,
const ParamAdder_Base<T,TRet,NewArg>& me2)
const
28 return::mel::mpl::equal<true>( mFunctor,me2.mFunctor );
52 template <
class T,
class TRet,
class NewArg,VARIABLE_ARGS>
55 :
public ParamAdder_Base<T,TRet,NewArg>
59 ParamAdder( T&& functor ):ParamAdder_Base<T,TRet,NewArg>(std::forward<T>(functor)){};
61 TRet operator()( VARIABLE_ARGS_IMPL,NewArg newarg )
63 return ParamAdder_Base<T,TRet,NewArg>::mFunctor( VARIABLE_ARGS_USE );
68 template <
class T,
class TRet,
class NewArg >
69 class ParamAdder<T,TRet,NewArg,void> :
public ParamAdder_Base<T,TRet,NewArg>
72 ParamAdder( T&& functor ): ParamAdder_Base<T,TRet,NewArg>( std::forward<T>(functor) ){};
73 TRet operator()( NewArg )
75 return ParamAdder_Base<T,TRet,NewArg>::mFunctor();
84 template <
class TRet,
class NewArg,VARIABLE_ARGS_NODEFAULT,
class T>
inline
85 ParamAdder<T,TRet,VARIABLE_ARGS_DECL, NewArg> addParam( T functor )
87 return ParamAdder<T,TRet,NewArg, VARIABLE_ARGS_DECL>( std::forward<T>(functor) );
90 template <
class T,
class TRet,
class NewArg,VARIABLE_ARGS>
91 class ParamAdder<T,TRet,NewArg,VARIABLE_ARGS_DECL,void> :
public ParamAdder_Base<T,TRet,NewArg>
94 ParamAdder( T&& functor ):ParamAdder_Base<T,TRet,NewArg>( std::forward<T>(functor) ){};
96 TRet operator()( VARIABLE_ARGS_IMPL,NewArg )
98 return ParamAdder_Base<T,TRet,NewArg>::mFunctor( VARIABLE_ARGS_USE );
108 template <
class TRet,
class NewArg,VARIABLE_ARGS,
class T>
inline
109 ParamAdder<T,TRet,NewArg,VARIABLE_ARGS_DECL > addParam( T functor )
111 return ParamAdder<T,TRet,NewArg,VARIABLE_ARGS_DECL>( std::forward<T>(functor) );
137 #if VARIABLE_NUM_ARGS == VARIABLE_MAX_ARGS
140 template <
class T,
class TRet,
class NewArg>
141 class ParamAdder_prev_Base
144 ParamAdder_prev_Base( T&& functor ):mFunctor( std::forward<T>(functor) ){};
148 return equality( Int2Type< Conversion<F, ParamAdder_prev_Base<T,TRet,NewArg> >::exists >(),ob2 );
152 bool equality( Int2Type<false>,
const F&)
const
156 bool equality( Int2Type<true >,
const ParamAdder_prev_Base<T,TRet,NewArg>& me2)
const
158 return (mFunctor == me2.mFunctor);
165 template <
class T,
class TRet,
class NewArg,VARIABLE_ARGS>
169 ParamAdder_prev(
const T& functor ):ParamAdder_prev_Base<T,TRet,NewArg>(functor){};
171 TRet operator()( NewArg newarg,VARIABLE_ARGS_IMPL )
173 return ParamAdder_prev_Base<T,TRet,NewArg>::mFunctor( VARIABLE_ARGS_USE );
182 template <
class T,
class TRet,
class NewArg >
183 class ParamAdder_prev<T,TRet,NewArg,void> :
public ParamAdder_prev_Base<T,TRet,NewArg>
186 ParamAdder_prev(
const T& functor ): ParamAdder_prev_Base<T,TRet,NewArg>( functor ){};
187 TRet operator()( NewArg )
189 return ParamAdder_prev_Base<T,TRet,NewArg>::mFunctor();
198 template <
class TRet,
class NewArg,VARIABLE_ARGS_NODEFAULT,
class T>
inline
204 template <
class T,
class TRet,
class NewArg,VARIABLE_ARGS>
205 class ParamAdder_prev<T,TRet,NewArg,VARIABLE_ARGS_DECL,void> :
public ParamAdder_prev_Base<T,TRet,NewArg>
208 ParamAdder_prev(
const T& functor ):ParamAdder_prev_Base<T,TRet,NewArg>( functor ){};
210 TRet operator()( NewArg, VARIABLE_ARGS_IMPL)
212 return ParamAdder_prev_Base<T,TRet,NewArg>::mFunctor( VARIABLE_ARGS_USE );
221 template <
class TRet,
class NewArg,VARIABLE_ARGS,
class T>
inline
create new functor with new param for operator() BEFORE any other param usage: suppose we have a func...
Definition: ParamAdderImpl.h:167
create new functor with new param for operator() AFTER any other param usage: suppose we have a funct...
Definition: ParamAdderImpl.h:57
Small operator==(const AnyType &, const AnyType &)
Definition: Callback_Impl.h:11