The following program fails to compile (148 lines of errors, will
paste on request) with
g++ (Ubuntu 4.9.2-0ubuntu1~14.04) 4.9.2 in -std=c++11 mode.
This is using Boost 1.59.0. Command line:
g++ -std=c++11 -I ~/boost_1_59_0 -o make_variant make_variant.cpp
I assume I'm making a simple error. I would appreciate your pointing
it out. Thank you!
(Is there a simpler way to obtain a variant of the result types of
passed functions? I was hoping I could just write: boost::variant<
std::result_of<Fns>::type... >.)
#include
#include
#include
#include // std::result_of
template < typename... Fns >
typename boost::make_variant_over<
boost::mpl::transform<
boost::mpl::vector,
std::result_ofboost::mpl::_1 > >::type
multiplex(Fns && ... functions)
{
typedef typename boost::make_variant_over<
boost::mpl::transform<
boost::mpl::vector,
std::result_ofboost::mpl::_1 > >::type return_t;
// dummy for now
return return_t();
}
int main(int argc, char *argv[])
{
boost::variant var =
multiplex([argc](){ return argc; },
[argv](){ return argv[0]; });
return 0;
}