29 #ifndef ETL_TYPE_LOOKUP_INCLUDED
30 #define ETL_TYPE_LOOKUP_INCLUDED
36 #include "static_assert.h"
38 #include "null_type.h"
48 #error THIS HEADER IS A GENERATOR. DO NOT INCLUDE.
68 template <
typename T,
int ID_>
82 template <
typename T1,
typename T2>
89 #if ETL_CPP11_SUPPORTED && !defined(ETL_TYPE_SELECT_FORCE_CPP03)
93 template <
typename... TTypes>
102 template <
size_t ID,
typename T1,
typename... TRest>
103 struct type_from_id_helper
107 typename type_from_id_helper<ID, TRest...>::type>::type;
111 template <
size_t ID,
typename T1>
112 struct type_from_id_helper<ID, T1>
127 using type =
typename type_from_id_helper<ID, TTypes...>::type;
132 #if ETL_CPP14_SUPPORTED
134 using type_from_id_t =
typename type_from_id<ID>::type;
142 template <
typename T,
typename T1,
typename... TRest>
143 struct id_from_type_helper
149 template <
typename T,
typename T1>
150 struct id_from_type_helper<T, T1>
160 template <
typename T>
163 static constexpr
size_t value = id_from_type_helper<T, TTypes...>::value;
165 static_assert(value != UNKNOWN,
"Invalid type");
168 #if ETL_CPP17_SUPPORTED
169 template <
typename T>
170 static constexpr
size_t id_from_type_v = id_from_type<T>::value;
174 template <
typename T>
175 static unsigned int get_id_from_type(
const T&)
177 return get_id_from_type<T>();
181 template <
typename T>
182 static unsigned int get_id_from_type()
184 return id_from_type<T>::value;
191 template <
typename... TTypes>
192 class type_type_lookup
199 template <
typename T,
typename T1,
typename... TRest>
200 struct type_from_type_helper
204 typename type_from_type_helper<T, TRest...>::type>::type;
207 template <
typename T,
typename T1>
208 struct type_from_type_helper<T, T1>
217 template <
typename T>
223 using type =
typename type_from_type_helper<T, TTypes...>::type;
228 #if ETL_CPP14_SUPPORTED
230 template <
typename T>
231 using type_from_type_t =
typename type_from_type<T>::type;
Definition: integral_limits.h:54
conditional
Definition: type_traits_generator.h:1202
is_same
Definition: type_traits_generator.h:981
Definition: absolute.h:37
Definition: type_lookup.h:245
The type/id pair type to use for type/id lookup template parameters.
Definition: type_lookup_generator.h:70
The type/type pair type to use for type/type lookup template parameters.
Definition: type_lookup_generator.h:84