Le 18/11/14 23:52, Sebastian Redl a écrit :
On 18 Nov 2014, at 22:59, Antony Polukhin <antoshkka@gmail.com> wrote:
2014-11-19 0:40 GMT+03:00 Nevin Liber <nevin@eviloverlord.com>:
It's the inversion of control that people just don't like.
As a guy, who's been keeping an eye on Boost.Variant for last two years, I was planning to add support for generalized lambdas as a visitors for variant:
apply_visitor( [](auto v){ std::cout << v; }, variant_variable ); Alternatively, it could be done like this:
apply_visitor(variant_variable, [](int i) { std::cout << "int: " << i; }, [](float f) { std::cout << "float: " << f; }, otherwise([](auto v) { std::cout << "something: " << v; });
I've recently written something very similar for boost::any, using runtime checks instead of course.
I have been playing with make_overload/match (See https://github.com/viboes/tags/blob/master/test/any/include_pass.cpp#L259) boost::any a = 2; boost::any b = std::string("2"); functional::match_all<void>(std::make_tuple(select<types<int, std::string>>(a), select<types<int, std::string>>(b)), [](int i, int j ) { BOOST_TEST(false); }, [](auto &&i, auto &&j ) { }, [](...) { BOOST_TEST(false); } ); Best, Vicente