I want to save the \"binder\" of a function to a variable, to use it repetitively in the following code by exploiting its operator overloading facilities. Here is the code t
The short answer is: you don't need to know (implementation defined).
It is a bind expression (std::tr1::is_bind_expression<T>::value
yields true for the actual type).
Look at
std::tr1::function<>
decltype()
can help you move furtherstd::tr1::function<int> f; // can be assigned from a function pointer, a bind_expression, a function object etc
int realfunc();
int realfunc2(int a);
f = &realfunc;
int dummy;
f = tr1::bind(&realfunc2, dummy);
BOOST_AUTO() aims to support the semantics of c++0x auto without compiler c++0x support:
BOOST_AUTO(f,boost::bind(&T::some_complicated_method, _3, _2, "woah", _2));
Essentially the same but with compiler support:
template <class T> struct DoWork { /* ... */ };
auto f = boost::bind(&T::some_complicated_method, _3, _2, "woah", _2));
DoWork<decltype(T)> work_on_it(f); // of course, using a factory would be _fine_
Note that auto has probably been invented for this kind of situation: the actual type is a 'you don't want to know' and may vary across compilers/platforms/libraries