Есть ли простой способ переместить данные, содержащиеся в некоторых 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);
}