12template<
typename Type>
15 using type = std::variant<Type>;
18template<
typename Type>
21 using type = std::variant<Type>;
24template<
typename Type,
typename... Types>
27 using type = std::variant<Type, Types...>;
30template<
typename Type,
typename... Types>
33template<
typename Type,
typename... Types>
36 using parameter_types =
39 if constexpr(tpf::types::common_type_v<parameter_types>)
44 return std::vector<common_type>{
45 static_cast<common_type
>(std::forward<Type>(arg)),
46 static_cast<common_type
>(std::forward<Types>(args))... };
55 return std::vector<element_t>{
element_t{std::forward<Type>(arg)},
56 element_t{ std::forward<Types>(args) }... };
78 auto v2 =
make_variants(
"New String", 1, 2.0f, 3.14,
"String Literal",
79 std::string(
"I love it"), L
"Wide Character String");
std::remove_cv_t< std::remove_reference_t< std::decay_t< Type > > > decay_remove_cv_ref_t
void test_make_variants()
void test_make_variants_two()
std::remove_cv_t< std::remove_reference_t< Type > > remove_cv_ref_t
typename to_variant_st< tpf::types::unique_types_t< Type, Types... > >::type to_variant_t
auto make_variants(Type &&arg, Types &&... args)
hidden::unique_types_t< Types... > unique_types_t
hidden::common_type_t< Types... > common_type_t
Includes subnamespace conversion.
std::variant< Type, Types... > type
std::variant< Type > type
std::variant< Type > type
This type is used to manipulate type list.
Stream output operators << are implemented.