#include #include #include #include void fn_1(int){} void fn_2(int,int){} void fn_0(){} namespace _bi=boost::_bi; template struct list_size; template<>struct list_size<_bi::list0>{enum {value=0};}; templatestruct list_size<_bi::list1 >{enum {value=1};}; templatestruct list_size<_bi::list2 >{enum {value=2};}; template size_t get_bind_nargs(_bi::bind_t const &) { return list_size::value; } int main() { std::cout << get_bind_nargs(boost::bind(&fn_0)) << std::endl; std::cout << get_bind_nargs(boost::bind(&fn_1,_1)) << std::endl; std::cout << get_bind_nargs(boost::bind(&fn_2,_1,_2)) << std::endl; }