
Hi, Unfortunately, with the code you have proposed I get the following error: boost_tests.cpp(33): error C3867: 'boost::optional<T>::get_value_or': function call missing argument list; use '&boost::optional<T>::get_value_or' to create a pointer to member with [ T=boost::variant<int,std::string> ] boost_tests.cpp(33): error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<10,boost::lambda::function_action<10,T>>,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 - 3 provided f:\boost_1_55_0\boost\lambda\detail\bind_functions.hpp(1743) : see declaration of 'boost::lambda::bind' boost_tests.cpp(33): 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 - 3 provided with [ Arity=10, Act=boost::lambda::function_action<10> ] f:\boost_1_55_0\boost\lambda\detail\bind_functions.hpp(1710) : see declaration of 'boost::lambda::bind' boost_tests.cpp(33): error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<10,boost::lambda::function_action<10,T>>,detail::bind_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 - 3 provided f:\boost_1_55_0\boost\lambda\detail\bind_functions.hpp(1673) : see declaration of 'boost::lambda::bind' boost_tests.cpp(33): error C2780: 'const boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<9,boost::lambda::function_action<9,T>>,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 - 3 provided f:\boost_1_55_0\boost\lambda\detail\bind_functions.hpp(1526) : see declaration of 'boost::lambda::bind' boost_tests.cpp(33): 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 - 3 provided And so on... Regards, Konrad.