
2013/5/8 Igor R
#include
//A simplified wrapper template<typename T> struct wrap { T t; wrap(T& _t) : t(_t) {} operator T() const { return t; } T force() const { return t; } }; struct A{}; struct B{};
typedef boost::variant my_variant;
int main() { A a; my_variant x(a); #ifndef WAR my_variant y = wrap
(x); #else my_variant y = wrap (x).force(); #endif } And the error:
/home/bcatanzaro/boost_1_53_0/boost/variant/variant.hpp:1574:9: error: no matching function for call to ‘boost::variant::initializer::initialize(void*, std::remove_reference
>&>::type)’ FWIW, your case can be reproduced with even more trivial code:
#include
typedef boost::variant<int> my_variant; struct convertible { operator my_variant() const { return my_variant(); } };
int main() { convertible x; my_variant y = x; }
I'll take care of that issue, but not 100% sure that there will be enough time to push fix to 1.54. There is a ticket for that issue: https://svn.boost.org/trac/boost/ticket/8555 . -- Best regards, Antony Polukhin