ну тоесть перегрузки есть
Как и в любом пригодном для прода языке программирования.
там mem::forget это сейф
в крестах хоть можно запретить все кроме визита
да что вы к этому variant докопались. C++ ни на что не претендует, он про возможности. В том числе и стрелять в ноги
в расте mem::forget не запретить никак
Нет, надо все переписать на плюсы
А как, кстати?
Ну все, раст небезопасный, зря старались ребята.
template<class... Ts> class variant{ std::variant<Ts...> _member; template<class R, class F> friend R std::visit(variant<Ts...> v, F&&f) { return std::visit(v._member, std::forward<F>(f)); } }
кстати тут же и можно сделать иньекцию
template<class... Ts> class variant{ template<class... Ts> variant(variant<Ts...> v) : _member( std::visit([](auto&& a){return a;}, v) ){} std::variant<Ts...> _member; template<class R, class F> friend R std::visit(variant<Ts...> v, F&&f) { return std::visit(v._member, std::forward<F>(f)); } }
Обсуждают сегодня