"Note, that in C++ it is possible to take the address of an overloaded function only if the address is assigned to, or used as an initializer of, a variable, the type of which solves the amibiguity, or if an explicit cast expression is used. This means that overloaded functions cannot be used in bind expressions directly, e.g.:"
void foo(int); void foo(float); int i; ... bind(&foo, _1)(i); // error ... void (*pf1)(int) = &foo; bind(pf1, _1)(i); // ok 1 bind(static_cast<void(*)(int)> (&foo), _1)(i); // ok 2If one might want to use an overloaded (member-) function with a binder an explicit disambiguation is needed to tell the compiler which overload it should take. Unfortunately unwieldy. Also, const and non-const member-functions need explicit disambiguation.