29 #ifndef ETL_TYPE_SELECT_INCLUDED
30 #define ETL_TYPE_SELECT_INCLUDED
33 #include "static_assert.h"
35 #include "null_type.h"
41 #error THIS HEADER IS A GENERATOR. DO NOT INCLUDE.
50 #if ETL_CPP11_SUPPORTED && !defined(ETL_TYPE_SELECT_FORCE_CPP03)
54 template <
typename... TTypes>
60 template <
size_t ID,
size_t N,
typename T1,
typename... TRest>
61 struct type_select_helper
65 typename type_select_helper<ID, N + 1, TRest...>::type>::type;
69 template <
size_t ID,
size_t N,
typename T1>
70 struct type_select_helper<ID, N, T1>
80 static_assert(ID <
sizeof...(TTypes),
"Illegal type_select::select index");
82 using type =
typename type_select_helper<ID, 0, TTypes...>::type;
85 #if ETL_CPP14_SUPPORTED
87 using select_t =
typename select<ID>::type;
96 template <
typename T0,
116 template <const
size_t ID>
139 ETL_STATIC_ASSERT(ID < 16,
"Invalid ID");
146 template <
typename T0,
161 struct type_select<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
164 template <const
size_t ID>
186 ETL_STATIC_ASSERT(ID < 15,
"Invalid ID");
193 template <
typename T0,
207 struct type_select<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
210 template <const
size_t ID>
231 ETL_STATIC_ASSERT(ID < 14,
"Invalid ID");
238 template <
typename T0,
251 struct type_select<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
254 template <const
size_t ID>
274 ETL_STATIC_ASSERT(ID < 13,
"Invalid ID");
281 template <
typename T0,
293 struct type_select<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
296 template <const
size_t ID>
315 ETL_STATIC_ASSERT(ID < 12,
"Invalid ID");
322 template <
typename T0,
333 struct type_select<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
336 template <const
size_t ID>
354 ETL_STATIC_ASSERT(ID < 11,
"Invalid ID");
361 template <
typename T0,
374 template <const
size_t ID>
391 ETL_STATIC_ASSERT(ID < 10,
"Invalid ID");
398 template <
typename T0,
410 template <const
size_t ID>
426 ETL_STATIC_ASSERT(ID < 9,
"Invalid ID");
433 template <
typename T0,
444 template <const
size_t ID>
458 ETL_STATIC_ASSERT(ID < 8,
"Invalid ID");
465 template <
typename T0,
475 template <const
size_t ID>
488 ETL_STATIC_ASSERT(ID < 7,
"Invalid ID");
495 template <
typename T0,
504 template <const
size_t ID>
516 ETL_STATIC_ASSERT(ID < 6,
"Invalid ID");
523 template <
typename T0,
531 template <const
size_t ID>
542 ETL_STATIC_ASSERT(ID < 5,
"Invalid ID");
549 template <
typename T0,
556 template <const
size_t ID>
566 ETL_STATIC_ASSERT(ID < 4,
"Invalid ID");
573 template <
typename T0,
579 template <const
size_t ID>
588 ETL_STATIC_ASSERT(ID < 3,
"Invalid ID");
595 template <
typename T0,
600 template <const
size_t ID>
608 ETL_STATIC_ASSERT(ID < 2,
"Invalid ID");
615 template <
typename T0>
619 template <const
size_t ID>
626 ETL_STATIC_ASSERT(ID < 1,
"Invalid ID");
Definition: constant.h:45
Definition: null_type.h:39
conditional
Definition: type_traits_generator.h:1202
Definition: absolute.h:37
Definition: type_select.h:118
Definition: type_select.h:113