8template<
typename... Types>
19template<
typename RightType,
typename... RightTypes>
25template<
typename... LeftTypes>
31template<
typename... LeftTypes,
typename RightType,
typename... RightTypes>
37template<
size_t FirstN,
typename... LeftTypes,
typename RightType,
typename... RightTypes>
45 using type = std::conditional_t<FirstN==0, type_0, type_1>;
48template<
size_t FirstN,
typename... Types>
52template<
size_t FirstN,
typename... Types>
55 static_assert(FirstN <=
sizeof...(Types),
"FirstN out of range");
60template<
size_t FirstN,
typename... Types>
63 static_assert(FirstN <=
sizeof...(Types),
"FirstN out of range");
69template<
size_t FirstN,
typename... Types>
typename first_n_types_list_st< FirstN, type_list_t<>, Types... >::type first_n_types_list_t
void test_first_n_types_t()
void test_first_n_types_list()
typename first_n_types_st< FirstN, Types... >::type first_n_types_t
Type to string name conversions are defined.
std::conditional_t< FirstN==0, type_0, type_1 > type
std::conditional_t< FirstN==1, type_list_t< LeftTypes..., RightType >, typename first_n_types_list_st< FirstN-1, type_list_t< LeftTypes..., RightType >, type_list_t< RightTypes... > >::type > type_1
typename first_n_types_list_st< FirstN, type_list_t<>, type_list_t< Types... > >::type type
typename first_n_types_list_st< FirstN, type_list_t<>, type_list_t< Types... > >::type type
This type is used to manipulate type list.
Stream output operators << are implemented.