
Evan Driscoll wrote:
In other words, I was doing void backing_func() {...} boost::function<void()> func(backing_func); void foo(function<void()> callback) { if (callback == func) { fast_foo(); } else { slow_foo(callback); } } but by changing the if statement condition to if (callback == &backing_func) everything is fine and dandy. My suggestion is that the FAQ entry at http://www.boost.org/doc/libs/1_52_0/doc/html/function/faq.html should be updated to point out that there IS a way to do this specific case. If everyone read the whole docs and remembered them perfectly this wouldn't be a problem, but of course those statements are probably true of exactly no one. :-) I stumbled across the FAQ entry, which I feel strongly suggests that what I want to do is impossible.
I usually read the tutorials before the FAQ. I found your specific case here: <http://www.boost.org/doc/libs/1_53_0/doc/html/function/tutorial.html#idp58429792> That section describes the types of functions against which a boost::function is equality-comparable. A little repetition might not hurt in this case, though. Cromwell D. Enage