Hello everybody, First of all, i'm a beginner trying to understand the use of the boost::bind library. Here is my problem : I'd like to know if there is a way to omit placeholders when calling boost::bind and let the compiler deduce their number. I understand that this is contrary to the flexibility offers by the placeholder, but i need to do something like that. void bar() {} void bar2(int) {} // Compile and works well boost::function < void ()> f1( boost::bind(&bar) ) ; boost::function < void (int) > f2( boost::bind(&bar2,_1) ) ; // i'd like to write this, but it doesn't compile // without the placeholders boost::function < void (int) > f2( boost::bind(&bar2) ) ; // i can write a small helper function mybind to achieve my goal // this compile and works well mybind(bar2) ; with template <typename Ret, typename Arg1, typename Arg2> void mybind(Ret (*Func)(Arg1, Arg2)) { boost::function<Ret (Arg1, Arg2)> f(Func) ; } I hope you understand what i've try to show. Maybe i missed something in the documentation. Thank you for reading ! Here is the working .cpp file i use to test things. =============================== #include <iostream> #include <stdexcept> #include <boost/bind.hpp> #include <boost/function.hpp> template <typename Ret, typename Arg1, typename Arg2> void mybind(Ret (*Func)(Arg1)) { boost::function<Ret (Arg1)> f(Func) ; } void bar() { std::cout << "bar()\n" ; } void bar2(int a) { std::cout << "bar2(int)\n" ; } int main (int argc, char* argv[]) { try { // Compile and works well { boost::function < void ()> f1( boost::bind(&bar) ) ; boost::function < void (int) > f2( boost::bind(&bar2,_1) ) ; } /* // i'd like to write this, but it doesn't compile { // without the placeholders boost::function < void (int) > f2( boost::bind(&bar2) ) ; f2(5) ; } */ // i can write a small helper function mybind to achieve my goal // this compile and works well /* template <typename Ret, typename Arg1, typename Arg2> void mybind(Ret (*Func)(Arg1, Arg2)) { boost::function<Ret (Arg1, Arg2)> f(Func) ; } */ { mybind(bar2) ; } } catch(std::exception& e) { std::cout << e.what() << '\n' ; return -1 ; } catch(...) { std::cout << "Non standard exception\n" ; return -1 ; } } ========================================