Bizarre Lambda bind() problem with Base class types

With the following code, If you UNCOMMENT the "// public : Base" line, you get compiler errors (????) I have tested this with MS VC 7.1 against both 1.31 and 1.32 versions of boost with the same results. Any idea why this is happening? (full sample code I wrote is attached) using namespace boost::lambda; namespace Tests { class Base { public: std::string ReturnAString() { std::cout << "hi"; } }; class Derived // : public Base // UNCOMMENT ME to see the errors { public: void Func() { bind(Base::ReturnAString,_1); } }; }; // namespace Tests My Compiler errors are this: ------ Build started: Project: Test_LambdaProblem, Configuration: Debug Win32 ------ Compiling... Test_LambdaProblem.cpp c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<10,boost::lambda::function_action<10,Result>>,detail::bin d_tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7,const Arg8,const Arg9,const Arg10>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &,const Arg8 &,const Arg9 &,const Arg10 &)' : expects 10 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1743) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7,const Arg8,const Arg9,const Arg10>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &,const Arg8 &,const Arg9 &,const Arg10 &)' : expects 10 arguments - 2 provided with [ Arity=10, Act=boost::lambda::function_action<10> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1710) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<10,boost::lambda::function_action<10,Result>>,detail::bin d_tuple_mapper<Result(__cdecl &)(Par1,Par2,Par3,Par4,Par5,Par6,Par7,Par8,Par9),const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7,const Arg8,const Arg9,const Arg10>::type>> boost::lambda::bind(Result (__cdecl &)(Par1,Par2,Par3,Par4,Par5,Par6,Par7,Par8,Par9),const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &,const Arg8 &,const Arg9 &,const Arg10 &)' : expects 10 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1673) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<9,boost::lambda::function_action<9,Result>>,detail::bind_ tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7,const Arg8,const Arg9>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &,const Arg8 &,const Arg9 &)' : expects 9 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1526) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7,const Arg8,const Arg9>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &,const Arg8 &,const Arg9 &)' : expects 9 arguments - 2 provided with [ Arity=9, Act=boost::lambda::function_action<9> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1494) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<9,boost::lambda::function_action<9,Result>>,detail::bind_ tuple_mapper<Result(__cdecl &)(Par1,Par2,Par3,Par4,Par5,Par6,Par7,Par8),const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7,const Arg8,const Arg9>::type>> boost::lambda::bind(Result (__cdecl &)(Par1,Par2,Par3,Par4,Par5,Par6,Par7,Par8),const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &,const Arg8 &,const Arg9 &)' : expects 9 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1458) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<8,boost::lambda::function_action<8,Result>>,detail::bind_ tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7,const Arg8>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &,const Arg8 &)' : expects 8 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1322) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7,const Arg8>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &,const Arg8 &)' : expects 8 arguments - 2 provided with [ Arity=8, Act=boost::lambda::function_action<8> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1291) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<8,boost::lambda::function_action<8,Result>>,detail::bind_ tuple_mapper<Result(__cdecl &)(Par1,Par2,Par3,Par4,Par5,Par6,Par7),const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7,const Arg8>::type>> boost::lambda::bind(Result (__cdecl &)(Par1,Par2,Par3,Par4,Par5,Par6,Par7),const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &,const Arg8 &)' : expects 8 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1257) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<7,boost::lambda::function_action<7,Result>>,detail::bind_ tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &)' : expects 7 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1123) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &)' : expects 7 arguments - 2 provided with [ Arity=7, Act=boost::lambda::function_action<7> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1092) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<7,boost::lambda::function_action<7,Result>>,detail::bind_ tuple_mapper<Result(__cdecl &)(Par1,Par2,Par3,Par4,Par5,Par6),const Arg2,const Arg3,const Arg4,const Arg5,const Arg6,const Arg7>::type>> boost::lambda::bind(Result (__cdecl &)(Par1,Par2,Par3,Par4,Par5,Par6),const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &,const Arg7 &)' : expects 7 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(1058) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<6,boost::lambda::function_action<6,Result>>,detail::bind_ tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5,const Arg6>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &)' : expects 6 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(927) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5,const Arg6>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &)' : expects 6 arguments - 2 provided with [ Arity=6, Act=boost::lambda::function_action<6> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(899) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<6,boost::lambda::function_action<6,Result>>,detail::bind_ tuple_mapper<Result(__cdecl &)(Par1,Par2,Par3,Par4,Par5),const Arg2,const Arg3,const Arg4,const Arg5,const Arg6>::type>> boost::lambda::bind(Result (__cdecl &)(Par1,Par2,Par3,Par4,Par5),const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &,const Arg6 &)' : expects 6 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(867) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<5,boost::lambda::function_action<5,Result>>,detail::bind_ tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &)' : expects 5 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(738) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4,const Arg5>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &)' : expects 5 arguments - 2 provided with [ Arity=5, Act=boost::lambda::function_action<5> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(710) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<5,boost::lambda::function_action<5,Result>>,detail::bind_ tuple_mapper<Result(__cdecl &)(Par1,Par2,Par3,Par4),const Arg2,const Arg3,const Arg4,const Arg5>::type>> boost::lambda::bind(Result (__cdecl &)(Par1,Par2,Par3,Par4),const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &)' : expects 5 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(679) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<4,boost::lambda::function_action<4,Result>>,detail::bind_ tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &)' : expects 4 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(558) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1,const Arg2,const Arg3,const Arg4>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &)' : expects 4 arguments - 2 provided with [ Arity=4, Act=boost::lambda::function_action<4> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(532) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<4,boost::lambda::function_action<4,Result>>,detail::bind_ tuple_mapper<Result(__cdecl &)(Par1,Par2,Par3),const Arg2,const Arg3,const Arg4>::type>> boost::lambda::bind(Result (__cdecl &)(Par1,Par2,Par3),const Arg2 &,const Arg3 &,const Arg4 &)' : expects 4 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(503) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<3,boost::lambda::function_action<3,Result>>,detail::bind_ tuple_mapper<const Arg1,const Arg2,const Arg3>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &)' : expects 3 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(387) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1,const Arg2,const Arg3>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &,const Arg3 &)' : expects 3 arguments - 2 provided with [ Arity=3, Act=boost::lambda::function_action<3> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(361) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<3,boost::lambda::function_action<3,Result>>,detail::bind_ tuple_mapper<Result(__cdecl &)(Par1,Par2),const Arg2,const Arg3>::type>> boost::lambda::bind(Result (__cdecl &)(Par1,Par2),const Arg2 &,const Arg3 &)' : expects 3 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(333) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2784: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<2,boost::lambda::function_action<2,Result>>,detail::bind_ tuple_mapper<const Arg1,const Arg2>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &)' : could not deduce template argument for 'overloaded function type' from 'overloaded function type' c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(232) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2784: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<2,boost::lambda::function_action<2,Result>>,detail::bind_ tuple_mapper<const Arg1,const Arg2>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &)' : could not deduce template argument for 'overloaded function type' from 'overloaded function type' c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(232) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2784: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1,const Arg2>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &)' : could not deduce template argument for 'overloaded function type' from 'overloaded function type' with [ Arity=2, Act=boost::lambda::function_action<2> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(212) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2784: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1,const Arg2>::type>> boost::lambda::bind(const Arg1 &,const Arg2 &)' : could not deduce template argument for 'overloaded function type' from 'overloaded function type' with [ Arity=2, Act=boost::lambda::function_action<2> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(212) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2784: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<2,boost::lambda::function_action<2,Result>>,detail::bind_ tuple_mapper<Result(__cdecl &)(Par1),const Arg2>::type>> boost::lambda::bind(Result (__cdecl &)(Par1),const Arg2 &)' : could not deduce template argument for 'overloaded function type' from 'overloaded function type' c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(190) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2784: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<2,boost::lambda::function_action<2,Result>>,detail::bind_ tuple_mapper<Result(__cdecl &)(Par1),const Arg2>::type>> boost::lambda::bind(Result (__cdecl &)(Par1),const Arg2 &)' : could not deduce template argument for 'overloaded function type' from 'overloaded function type' c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(190) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<1,boost::lambda::function_action<1,Result>>,detail::bind_ tuple_mapper<const Arg1>::type>> boost::lambda::bind(const Arg1 &)' : expects 1 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(91) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<Arity,Act>,detail::bind_tuple_mapper<const Arg1>::type>> boost::lambda::bind(const Arg1 &)' : expects 1 arguments - 2 provided with [ Arity=1, Act=boost::lambda::function_action<1> ] c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(71) : see declaration of 'boost::lambda::bind' c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost:: lambda::action<1,boost::lambda::function_action<1,Result>>,detail::bind_ tuple_mapper<Result(__cdecl &)(void)>::type>> boost::lambda::bind(Result (__cdecl &)(void))' : expects 1 arguments - 2 provided c:\Data\Rmtg\Root\_Common\_Lib\Boost\V_1_32\boost\lambda\detail\bind_fun ctions.hpp(49) : see declaration of 'boost::lambda::bind' Build log was saved at "file://c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\ _Prj\MsVc_V71\Debug\BuildLog.htm" Test_LambdaProblem - 33 error(s), 0 warning(s) ---------------------- Done ---------------------- Build: 0 succeeded, 1 failed, 0 skipped

Brian Braatz wrote:
With the following code, If you UNCOMMENT the "// public : Base" line, you get compiler errors (????)
I have tested this with MS VC 7.1 against both 1.31 and 1.32 versions of boost with the same results.
I don't have these compilers, but:
Any idea why this is happening? (full sample code I wrote is attached)
bind(Base::ReturnAString,_1);
Shouldn't that read bind(&Base::ReturnAString,_1); ? Note the '&'! Maybe this is what your compiler complains about... Regards, Daniel

Brian Braatz wrote:
With the following code, If you UNCOMMENT the "// public : Base" line, you get compiler errors (????)
I have tested this with MS VC 7.1 against both 1.31 and 1.32 versions of boost with the same results.
Any idea why this is happening? (full sample code I wrote is attached) [snip] std::string ReturnAString(); [snip] bind(Base::ReturnAString,_1);
This is the problem. Try: bind(Base::ReturnAString); or: bind(&Base::ReturnAString,this);
My Compiler errors are this:
c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<... > boost::lambda::bind(...)' : expects 10 arguments - 2 provided
The error is misleading. I got a similar error when using Boost.Bind in my GUI code. The basics of it is this: the arguments of bind(fn, ...) must match to the arguments of the function *exactly*, using _n for unspecified arguments. What this means is: using boost::bind; using boost::function; class button { void draw( event * ev ); }; button btn; function< ( event * ) > foo = bind(&button::draw,&btn); // [1] foo = bind(&button::draw,&btn,_1); // _1 needed for the event * argument [1] generates a similar error message to the one you get above. Maybe this should be mentioned in the documentation somewhere. HTH, Reece

Reece Dunn wrote:
The error is misleading. I got a similar error when using Boost.Bind in my GUI code. The basics of it is this: the arguments of bind(fn, ...) must match to the arguments of the function *exactly*, using _n for unspecified arguments. [...]
Maybe this should be mentioned in the documentation somewhere.
http://boost.org/libs/bind/bind.html#Q_doesnt_compile http://boost.org/libs/bind/bind.html#err_num_args
participants (4)
-
Brian Braatz
-
Daniel Frey
-
Peter Dimov
-
Reece Dunn