On Friday 26 September 2003 06:38 pm, Mark Loew wrote:
Alright I am now functioning in my code.
Now the hard part. Can you explain to me what I am missing. The _1 states to use the first paramter in the first position.
Doug mentioned that there is an implicit 'this' argument.
That was Peter :)
So the bind is creating a function object template
With the constructor of somefunc( S (T::*p)(A) ); // declaring the pointer to the function then the operator is operator( T *p, A x ) and calls the func
Right, so the function object has two parameters, the first (which corresponds to the implicit 'this' parameter) is of type T* and the second is of type A. When using bind, think of member function pointers as having an operator() like this one, and try to forget the ugly member pointer syntax.
So in the bind I was thinking that Boost::bind( Base::CheckFunc, x )
I wrongly assumed that the T value was the variable passed in by the find_if and the second parameter was the x my second variable on my func.
With bind(), no parameter is special, including the implicit object parameter. If we have: g = boost::bind(f, _1, x) then g(y) maps to: f(y, x) in our case, 'f' is an adaptor around a member function pointer, which ends up calling: y->*CheckFunc(x) Doug