1#ifndef TATOOINE_TYPE_LIST_H
2#define TATOOINE_TYPE_LIST_H
19template <
typename... Ts>
29template <
typename TypeList>
33template <
typename TypeList>
37template <
typename... Types>
39 : std::integral_constant<std::size_t, sizeof...(Types)> {};
50template <
typename TypeList, std::
size_t I>
55template <
typename TypeList, std::
size_t I>
59template <
typename Front,
typename... Rest, std::size_t I>
65template <std::
size_t I>
71template <
typename Front,
typename... Rest>
83template <
typename TypeList>
86template <
typename TypeList>
90template <
typename... Types>
106template <
typename TypeList>
109template <
typename TypeList>
113template <
typename... Types>
130template <
typename TypeList,
typename NewBack>
133template <
typename TypeList,
typename NewBack>
137template <
typename... Types,
typename NewBack>
150template <
typename TypeList,
typename NewFront>
153template <
typename TypeList,
typename NewFront>
157template <
typename... Types,
typename NewFront>
170template <
typename TypeList,
typename... TypesAccumulator>
173template <
typename TypeList>
176template <
typename T0,
typename T1,
typename... Rest,
177 typename... TypesAccumulator>
180 TypesAccumulator..., T0>::type;
183template <
typename T,
typename... TypesAccumulator>
188template <
typename... TypesAccumulator>
201template <
typename TypeList>
204template <
typename TypeList>
207template <
typename Front,
typename... Back>
223template <
typename TypeList,
typename T>
226template <
typename TypeList,
typename T>
230template <
typename SetHead,
typename... SetRest,
typename T>
232 static auto constexpr value =
236template <
typename SetHead,
typename... SetRest>
238 SetHead> : std::true_type {};
247template <
typename... Ts>
253 template <
typename T>
255 template <
typename T>
261 template <
typename T>
262 static bool constexpr contains = type_list_contains<this_type, T>;
264 static auto constexpr size = type_list_size<this_type>;
268 template <std::
size_t I>
280 template <
typename T>
283 template <
typename T>
286 template <
typename T>
287 static bool constexpr contains = type_list_contains<this_type, T>;
289 static auto constexpr size = 0;
293 template <std::
size_t I>
298template <
typename... Ts>
typename type_list_at_impl< TypeList, I >::type type_list_at
Access to the Ith element of TypeList.
Definition: type_list.h:56
typename type_list_back_impl< TypeList >::type type_list_back
Definition: type_list.h:88
static auto constexpr type_list_contains
Definition: type_list.h:227
typename type_list_front_impl< TypeList >::type type_list_front
Definition: type_list.h:111
typename type_list_pop_back_impl< TypeList >::type type_list_pop_back
Definition: type_list.h:174
typename type_list_pop_front_impl< TypeList >::type type_list_pop_front
Definition: type_list.h:205
typename type_list_push_back_impl< TypeList, NewBack >::type type_list_push_back
Definition: type_list.h:135
typename type_list_push_front_impl< TypeList, NewFront >::type type_list_push_front
Definition: type_list.h:155
static auto constexpr type_list_size
Size of a tatooine::type_list_impl.
Definition: type_list.h:34
typename front_type_impl< Ts... >::type front_type
Definition: variadic_helpers.h:41
typename back_type_impl< Ts... >::type back_type
Definition: variadic_helpers.h:57
Definition: algorithm.h:6
T type
Definition: common_type.h:13
Front type
Definition: type_list.h:73
typename type_list_at_impl< type_list_impl< Rest... >, I - 1 >::type type
Definition: type_list.h:61
Access to the Ith element of TypeList.
Definition: type_list.h:51
variadic::back_type< Types... > type
Definition: type_list.h:92
Definition: type_list.h:84
Definition: type_list.h:224
variadic::front_type< Types... > type
Definition: type_list.h:115
Definition: type_list.h:107
An empty struct that holds types.
Definition: type_list.h:277
type_list_at< this_type, I > at
Definition: type_list.h:294
type_list_push_front< this_type, T > push_front
Definition: type_list.h:284
type_list_push_back< this_type, T > push_back
Definition: type_list.h:281
An empty struct that holds types.
Definition: type_list.h:248
type_list_pop_front< this_type > pop_front
Definition: type_list.h:259
type_list_front< this_type > front
Definition: type_list.h:251
static bool constexpr empty
Definition: type_list.h:266
type_list_back< this_type > back
Definition: type_list.h:252
static bool constexpr contains
Definition: type_list.h:262
type_list_pop_back< this_type > pop_back
Definition: type_list.h:258
static auto constexpr size
Definition: type_list.h:264
type_list_push_back< this_type, T > push_back
Definition: type_list.h:254
type_list_at< this_type, I > at
Definition: type_list.h:269
type_list_push_front< this_type, T > push_front
Definition: type_list.h:256
Definition: type_list.h:52
typename type_list_pop_back_impl< type_list_impl< T1, Rest... >, TypesAccumulator..., T0 >::type type
Definition: type_list.h:180
Definition: type_list.h:171
Definition: type_list.h:202
Definition: type_list.h:131
Definition: type_list.h:151
Size of a tatooine::type_list_impl.
Definition: type_list.h:30