id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 10278,"variant c2666, wrong constructor?",toby_toby_toby@…,Antony Polukhin,"VC Express 2012, 11.0.61030.00 Update 4 When I use variant,C> it's working, but with variant it's not. I think it's because of wrong variant constructor called (like we construct from variant, but not from just V1). Workaround for me is to use variant. {{{ class V1 : public boost::variant { typedef boost::variant base_type; public: V1() { } V1( const V1& other ) :base_type( static_cast(other) ) { } V1& operator=( const V1& other ) { static_cast(*this) = static_cast(other); return *this; } }; boost::variant v2 = V1(); // C2666 }}} Full error text: {{{ error C2666: 'boost::variant::convert_construct' : 3 overloads have similar conversions 1> with 1> [ 1> T0_=V1, 1> T1=std::string 1> ] 1> f:\cpp\boost\boost/variant/variant.hpp(1724): could be 'void boost::variant::convert_construct(boost::variant &&,long)' 1> with 1> [ 1> T0_=V1, 1> T1=std::string 1> ] 1> f:\cpp\boost\boost/variant/variant.hpp(1714): or 'void boost::variant::convert_construct(const boost::variant &,long)' 1> with 1> [ 1> T0_=V1, 1> T1=std::string 1> ] 1> f:\cpp\boost\boost/variant/variant.hpp(1600): or 'void boost::variant::convert_construct(T &&,int,boost::mpl::false_)' 1> with 1> [ 1> T0_=V1, 1> T1=std::string, 1> T=V1 1> ] 1> while trying to match the argument list '(V1, long)' 1> test.cpp(31) : see reference to function template instantiation 'boost::variant::variant(T &&,void *,void *)' being compiled 1> with 1> [ 1> T0_=V1, 1> T1=std::string, 1> T=V1 1> ] 1> test.cpp(31) : see reference to function template instantiation 'boost::variant::variant(T &&,void *,void *)' being compiled 1> with 1> [ 1> T0_=V1, 1> T1=std::string, 1> T=V1 1> ] }}} ",Bugs,closed,Boost 1.62.0,variant,Boost 1.55.0,Problem,fixed,,