29#ifndef ETL_PARAMETER_PACK
30#define ETL_PARAMETER_PACK
37#if ETL_CPP11_NOT_SUPPORTED
38 #if !defined(ETL_IN_UNIT_TEST)
39 #error NOT SUPPORTED FOR C++03 OR BELOW
47 template <
typename...
TTypes>
52 static constexpr size_t size =
sizeof...(TTypes);
63 template <
typename Type,
typename T1,
typename... TRest>
64 struct index_of_type_helper
70 template <
typename Type,
typename T1>
71 struct index_of_type_helper<Type, T1>
73 static constexpr size_t value = 1;
78 static_assert(
etl::is_one_of<T, TTypes...>::value,
"T is not in parameter pack");
81 static constexpr size_t value = index_of_type_helper<T, TTypes...>::value - 1;
98 template <
size_t II,
size_t N,
typename T1,
typename... TRest>
99 struct type_from_index_helper
101 using type =
typename etl::conditional<II == N, T1,
typename type_from_index_helper<II, N + 1, TRest...>::type>::type;
105 template <
size_t II,
size_t N,
typename T1>
106 struct type_from_index_helper<II, N, T1>
113 static_assert(I <
sizeof...(TTypes),
"Index out of bounds of parameter pack");
116 using type =
typename type_from_index_helper<I, 0, TTypes...>::type;
129 template <
typename...
TTypes>
133 template <
typename T,
typename...
TTypes>
137#if ETL_USING_CPP17 && !ETL_USING_GCC_COMPILER && !ETL_USING_CLANG_COMPILER
139 template <
typename...
TTypes>
140 template <
typename T>
144 template <
typename...
TTypes>
145 template <
typename T>
conditional
Definition type_traits_generator.h:1199
is_same
Definition type_traits_generator.h:1080
bitset_ext
Definition absolute.h:38
ETL_CONSTEXPR TContainer::size_type size(const TContainer &container)
Definition iterator.h:1187
ETL_NODISCARD ETL_CONSTEXPR14 T round_half_even_unscaled(T value) ETL_NOEXCEPT
Definition scaled_rounding.h:314