boost::variant nicht copy/movable?
-
Huhu,
Täusche ich mich, oder ist boost::variant weder copy-, noch movable? Gibt es dafür einen Grund?
Ich habe copy und move emuliert, aber schön ist das natürlich nicht.
template <typename Variant> struct copy_visitor : boost::static_visitor<> { const Variant& variant; copy_visitor(Variant& variant) : variant(variant) {} template <typename T> void operator () (const T& t) const // muss const sein, da boost intern eine const& verwendet { const_cast<Variant&>(variant) = t; } }; template <typename Variant> struct move_visitor : boost::static_visitor<> { const Variant& variant; move_visitor(Variant& variant) : variant(variant) {} template <typename T> void operator () (T& t) const // wie oben { const_cast<Variant&>(variant) = std::move(t); } };Grüße,
PI
-
Ich kann das nicht nachvollziehen. Folgendes kompiliert bei mir problemlos:
#include <boost/variant.hpp> int main() { boost::variant<int, double> v(1.0); boost::variant<int, double> v2(v); v = v2; }
-
Hm, tatsächlich, nun funktionierts bei mir auch. Hab ich wohl irgendwas anderes falsch gemacht, danke.