8template<
typename... Types>
13 stream <<
"Types of arguments: " << types_t{} <<
endl;
15 stream <<
"The count types: " << types::type_count_v<types_t> <<
endl;
32template<
typename... Types>
37 if constexpr(types::common_type_v<types_t>)
45 stream <<
"The types are : " << types_t{} <<
endl;
47 stream <<
"Common type does not exist" <<
endl;
50 stream <<
"Is int in the list: " << types::is_in_list_v<int, types_t> <<
endl;
52 stream <<
"All types are the same: " << types::is_same_v<types_t> <<
endl;
60 stream <<
"Original types: " << types_t{} <<
endl;
99 vv.emplace_back(22.0 /7.0);
100 vv.emplace_back(
"Thomas Kim");
101 vv.emplace_back(
"Sophie Turner");
103 stream <<
"vv (vector of variants) = " << vv <<
endl;
108 lv.emplace_back(22.0 /7.0);
109 lv.emplace_back(L
"Thomas Kim");
110 lv.emplace_back(
"Sophie Turner");
112 stream <<
"lv (list of variants) = "<< lv <<
endl;
119 sv.insert(22.0 /7.0);
123 stream <<
"sv (set of variants) = " << sv <<
endl;
void test_advanced_type_list()
void how_to_use_type_list(Types... args)
void test_what_is_type_list(Types... args)
void test_containers_of_variants()
std::common_type_t< S, T > common_t
typename unique_types_st< type_list_t<>, Types... >::type unique_types_t
Type to string name conversions are defined.
hidden::select_first_type_t< Types... > select_first_type_t
hidden::vector_of_variants_t< ElementTypes... > vector_of_variants_t
hidden::unique_types_t< Types... > unique_types_t
hidden::common_type_t< Types... > common_type_t
hidden::select_last_type_t< Types... > select_last_type_t
hidden::to_variant_t< Type, Types... > to_variant_t
hidden::set_of_variants_t< ElementTypes... > set_of_variants_t
hidden::select_nth_type_t< SelectIndex, Types... > select_nth_type_t
hidden::list_of_variants_t< ElementTypes... > list_of_variants_t
This type is used to manipulate type list.
Stream output operators << are implemented.
#define Tpf_GetTypeName(type_arg)
A macro that returns type_arg's string name.