29#ifndef ETL_TYPE_SELECT_INCLUDED
30#define ETL_TYPE_SELECT_INCLUDED
33#include "static_assert.h"
38#error THIS HEADER IS A GENERATOR. DO NOT INCLUDE.
47#if ETL_USING_CPP11 && !defined(ETL_TYPE_SELECT_FORCE_CPP03_IMPLEMENTATION)
51 template <
typename... TTypes>
57 template <
size_t Id,
size_t Index,
typename T1,
typename... TRest>
58 struct type_select_helper
60 using type =
typename etl::conditional<Id == Index,
62 typename type_select_helper<Id, Index + 1, TRest...>::type>::type;
66 template <
size_t Id,
size_t Index,
typename T1>
67 struct type_select_helper<Id, Index, T1>
77 static_assert(Id <
sizeof...(TTypes),
"Illegal type_select::select index");
79 using type =
typename type_select_helper<Id, 0, TTypes...>::type;
83 using select_t =
typename select<Id>::type;
89 template <
size_t Index,
typename... TTypes>
90 using type_select_t =
typename etl::type_select<TTypes...>:: template select_t<Index>;
97 template <
typename T0,
137 ::type>::type>::type>::type>::type>::type>::type>::type>
138 ::type>::type>::type>::type>::type>::type>::type>::type type;
140 ETL_STATIC_ASSERT(Id < 16,
"Invalid Id");
147 template <
typename T0,
162 struct type_select<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
184 ::type>::type>::type>::type>::type>::type>::type>::type>
185 ::type>::type>::type>::type>::type>::type>::type type;
187 ETL_STATIC_ASSERT(Id < 15,
"Invalid Id");
194 template <
typename T0,
208 struct type_select<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
229 ::type>::type>::type>::type>::type>::type>::type>::type>
230 ::type>::type>::type>::type>::type>::type type;
232 ETL_STATIC_ASSERT(Id < 14,
"Invalid Id");
239 template <
typename T0,
252 struct type_select<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
272 ::type>::type>::type>::type>::type>::type>::type>::type>
273 ::type>::type>::type>::type>::type type;
275 ETL_STATIC_ASSERT(Id < 13,
"Invalid Id");
282 template <
typename T0,
294 struct type_select<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
313 ::type>::type>::type>::type>::type>::type>::type>::type>
314 ::type>::type>::type>::type type;
316 ETL_STATIC_ASSERT(Id < 12,
"Invalid Id");
323 template <
typename T0,
334 struct type_select<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
352 ::type>::type>::type>::type>::type>::type>::type>::type>
353 ::type>::type>::type type;
355 ETL_STATIC_ASSERT(Id < 11,
"Invalid Id");
362 template <
typename T0,
389 ::type>::type>::type>::type>::type>::type>::type>::type>
392 ETL_STATIC_ASSERT(Id < 10,
"Invalid Id");
399 template <
typename T0,
424 ::type>::type>::type>::type>::type>::type>::type>::type>
427 ETL_STATIC_ASSERT(Id < 9,
"Invalid Id");
434 template <
typename T0,
457 ::type>::type>::type>::type>::type>::type>::type>::type type;
459 ETL_STATIC_ASSERT(Id < 8,
"Invalid Id");
466 template <
typename T0,
487 ::type>::type>::type>::type>::type>::type>::type type;
489 ETL_STATIC_ASSERT(Id < 7,
"Invalid Id");
496 template <
typename T0,
515 ::type>::type>::type>::type>::type>::type type;
517 ETL_STATIC_ASSERT(Id < 6,
"Invalid Id");
524 template <
typename T0,
541 ::type>::type>::type>::type>::type type;
543 ETL_STATIC_ASSERT(Id < 5,
"Invalid Id");
550 template <
typename T0,
565 ::type>::type>::type>::type type;
567 ETL_STATIC_ASSERT(Id < 4,
"Invalid Id");
574 template <
typename T0,
587 ::type>::type>::type type;
589 ETL_STATIC_ASSERT(Id < 3,
"Invalid Id");
596 template <
typename T0,
609 ETL_STATIC_ASSERT(Id < 2,
"Invalid Id");
616 template <
typename T0>
627 ETL_STATIC_ASSERT(Id < 1,
"Invalid Id");
Definition null_type.h:40
conditional
Definition type_traits_generator.h:1223
bitset_ext
Definition absolute.h:39
Definition type_select.h:119
etl::type_select< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 >::select Definition type_select.h:257
etl::type_select< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 >::select Definition type_select.h:213
Definition type_select.h:377
etl::type_select< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 >::select Definition type_select.h:167
etl::type_select< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::select Definition type_select.h:339
etl::type_select< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 >::select Definition type_select.h:299
Definition type_select.h:413
Definition type_select.h:447
Definition type_select.h:478
Definition type_select.h:507
Definition type_select.h:534
Definition type_select.h:559
Definition type_select.h:582
Definition type_select.h:603
Definition type_select.h:622
Definition type_select.h:114