tupleからvariantのarrayに変換する
タイトル通りです。もしかしたら便利な事があるかもしれません。
#include <sprout/tuple.hpp> #include <sprout/array.hpp> #include <sprout/variant.hpp> #include <sprout/index_tuple.hpp> template <typename... Types, sprout::index_t... Indices> constexpr auto tuple_to_varray_impl(const sprout::tuple<Types...>& t, const sprout::index_tuple<Indices...>&) { return sprout::make_array<sprout::variant<Types...>>( sprout::variant<Types...>(sprout::get<Indices>(t))...); } template <typename... Types> constexpr auto tuple_to_varray(const sprout::tuple<Types...>& t) { return tuple_to_varray_impl(t, sprout::index_range<0, sizeof...(Types)>::make()); } int main() { constexpr auto result = tuple_to_varray(sprout::make_tuple(1, 'a', 3.14)); static_assert(result[0] == 1, ""); static_assert(result[1] == 'a', ""); static_assert(result[2] == 3.14, ""); }