是否有一种简单的方法可以将std::variant<Ts...>
中包含的数据移动到std::variant<T,Ts...>
中?
我想可以通过一个额外的类模板来切换Ts...
中的所有类型,但是我想知道是否存在一种更优雅的就地方法。
例:
template <typename T, typename... Ts>
std::variant<T,Ts...> use(std::optional<T>&& opt, std::variant<Ts...>&& var) {
if (opt.has_value()) return *opt;
else return magic<T,T...>(var);
}
最佳答案
您可以访问,然后构造新的变量类型:
return std::visit([](auto&& arg) -> std::variant<T, Ts...> {
return std::forward<decltype(arg)>(arg);
}, std::move(var));
关于c++ - 如何将variant <Ts…>的值移动到variant <T,Ts…>中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61290807/