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 N,
typename T1,
typename... TRest>
58 struct type_select_helper
62 typename type_select_helper<ID, N + 1, TRest...>::type>::type;
66 template <
size_t ID,
size_t N,
typename T1>
67 struct type_select_helper<ID, N, 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 N,
typename... TTypes>
90 using type_select_t =
typename etl::type_select<TTypes...>:: template select_t<N>;
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");
conditional
Definition type_traits_generator.h:1155
bitset_ext
Definition absolute.h:38
pair holds two objects of arbitrary type
Definition utility.h:164
Definition type_select.h:119
Definition type_select.h:114