3namespace spark::mpl::type_seq
6 template <
typename... Ts>
9 inline static constexpr std::size_t value =
sizeof...(Ts);
12 template <
typename... Ts>
13 inline static constexpr std::size_t size_v =
size<Ts...>::value;
16 template <
typename... Ts>
19 inline static constexpr bool value =
sizeof...(Ts) == 0;
22 template <
typename... Ts>
23 inline static constexpr bool empty_v =
empty<Ts...>::value;
26 template <
typename T,
typename... Ts>
29 template <
typename T,
typename Head,
typename... Ts>
32 inline static constexpr bool value = std::is_same_v<T, Head> ||
contains<T, Ts...>::value;
38 inline static constexpr bool value =
false;
41 template <
typename T,
typename... Ts>
42 inline static constexpr bool contains_v =
contains<T, Ts...>::value;
45 template <
typename T,
typename... Ts>
48 template <
typename T,
typename Head,
typename... Ts>
51 inline static constexpr std::size_t value = std::is_same_v<T, Head> ? 0 : 1 +
index_of<T, Ts...>::value;
57 inline static constexpr std::size_t value = 0;
60 template <
typename T,
typename... Ts>
61 inline static constexpr std::size_t index_of_v =
index_of<T, Ts...>::value;
64 template <
typename T,
typename... Ts>
67 template <
template<
typename...>
typename C,
typename T,
typename Head,
typename... Ts>
68 struct find<T, C<Head, Ts...>>
70 inline static constexpr std::size_t value =
find<T, C<Ts...>>::value + 1;
73 template <
template<
typename...>
typename C,
typename T,
typename... Ts>
74 struct find<T, C<T, Ts...>>
76 inline static constexpr std::size_t value = 0;
79 template <
typename T,
typename... Ts>
80 inline static constexpr std::size_t find_v =
find<T, Ts...>::value;
83 template <
typename... Ts>
86 template <
typename Head,
typename... Ts>
92 template <
typename... Ts>
93 using front_t =
typename front<Ts...>::type;
96 template <
typename... Ts>
99 template <
typename Head,
typename... Ts>
102 using type =
typename back<Ts...>::type;
105 template <
typename Head>
111 template <
typename... Ts>
112 using back_t =
typename back<Ts...>::type;
115 template <
typename T,
typename List>
118 template <
template<
typename...>
typename C,
typename T,
typename... Ts>
121 using type = C<T, Ts...>;
124 template <
typename T,
typename... Ts>
125 using push_front_t =
typename push_front<T, Ts...>::type;
128 template <
typename T,
typename... Ts>
131 template <
template<
typename...>
typename C,
typename T,
typename... Ts>
134 using type = C<Ts..., T>;
137 template <
typename T,
typename... Ts>
138 using push_back_t =
typename push_back<T, Ts...>::type;
141 template <
typename List>
144 template <
template<
typename...>
typename C,
typename Head,
typename... Ts>
147 using type = C<Ts...>;
150 template <
typename... Ts>
151 using pop_front_t =
typename pop_front<Ts...>::type;
154 template <
typename... Ts>
157 template <
template<
typename...>
typename C,
typename Head,
typename... Ts>
163 template <
template<
typename...>
typename C,
typename Head>
169 template <
typename... Ts>
170 using pop_back_t =
typename pop_back<Ts...>::type;
173 template <std::
size_t N,
typename List>
176 template <
template<
typename...>
typename C, std::size_t N,
typename Head,
typename... Ts>
177 struct at<N, C<Head, Ts...>>
179 using type =
typename at<N - 1, C<Ts...>>::type;
182 template <
template<
typename...>
typename C,
typename Head,
typename... Ts>
183 struct at<0, C<Head, Ts...>>
188 template <std::size_t N,
typename... Ts>
189 using at_t =
typename at<N, Ts...>::type;
192 template <
typename T,
typename... Ts>
195 template <
template<
typename...>
typename C,
typename T,
typename... Ts>
198 using type = C<Ts...>;
201 template <
template<
typename...>
typename C,
typename T,
typename Head,
typename... Ts>
204 using type =
typename push_front<Head,
typename erase<T, C<Ts...>>::type>::type;
207 template <
typename T,
typename... Ts>
208 using erase_t =
typename erase<T, Ts...>::type;
211 template <std::size_t N,
typename... Ts>
214 template <
template<
typename...>
typename C, std::size_t N,
typename Head,
typename... Ts>
217 using type =
typename push_front<Head,
typename erase_at<N - 1, C<Ts...>>::type>::type;
220 template <
template<
typename...>
typename C,
typename Head,
typename... Ts>
223 using type = C<Ts...>;
226 template <std::size_t N,
typename... Ts>
227 using erase_at_t =
typename erase_at<N, Ts...>::type;
230 template <std::size_t N,
typename T,
typename... Ts>
233 template <
template<
typename...>
typename C, std::size_t N,
typename T,
typename Head,
typename... Ts>
236 using type =
typename push_front<Head,
typename insert_at<N - 1, T, C<Ts...>>::type>::type;
239 template <
template<
typename...>
typename C,
typename T,
typename Head,
typename... Ts>
242 using type =
typename push_front<T, C<Head, Ts...>>::type;
245 template <
template<
typename...>
typename C, std::size_t N,
typename T>
251 template <std::size_t N,
typename T,
typename... Ts>
252 using insert_at_t =
typename insert_at<N, T, Ts...>::type;
255 template <
typename T,
typename U,
typename... Ts>
258 template <
template<
typename...>
typename C,
typename T,
typename U,
typename Head,
typename... Ts>
261 using type =
typename push_front<Head,
typename replace<T, U, C<Ts...>>::type>::type;
264 template <
template<
typename...>
typename C,
typename T,
typename U,
typename Head,
typename... Ts>
267 using type =
typename push_front<U,
typename replace<T, U, C<Head, Ts...>>::type>::type;
270 template <
template<
typename...>
typename C,
typename T,
typename U,
typename... Ts>
273 using type =
typename replace<T, U, C<U, Ts...>>::type;
276 template <
template<
typename...>
typename C,
typename T,
typename U>
282 template <
typename T,
typename U,
typename... Ts>
283 using replace_t =
typename replace<T, U, Ts...>::type;
286 template <std::size_t N,
typename T,
typename... Ts>
289 template <
template<
typename...>
typename C, std::size_t N,
typename T,
typename Head,
typename... Ts>
295 template <
template<
typename...>
typename C,
typename T,
typename Head,
typename... Ts>
298 using type =
typename push_front<T, C<Ts...>>::type;
301 template <
template<
typename...>
typename C, std::size_t N,
typename T>
307 template <std::size_t N,
typename T,
typename... Ts>
308 using replace_at_t =
typename replace_at<N, T, Ts...>::type;
311 template <
typename... Ts>
314 template <
template<
typename...>
typename C,
typename... TypesToAdd,
typename Head,
typename... Ts>
317 using type =
typename reverse<C<Ts...>, Head, TypesToAdd...>::type;
320 template <
template<
typename...>
typename C,
typename... TypesToAdd>
323 using type = C<TypesToAdd...>;
326 template <
typename... Ts>
327 using reverse_t =
typename reverse<Ts...>::type;
330 template <
template <
typename>
typename Predicate,
typename... Ts>
333 template <
template<
typename...>
typename C,
template <
typename>
typename Predicate,
typename Head,
typename... Ts>
336 using type = std::conditional_t<Predicate<Head>::value,
typename push_front<Head,
typename filter<Predicate, C<Ts...>>::type>::type,
typename filter<
337 Predicate, C<Ts...>>::type>;
340 template <
template<
typename...>
typename C,
template <
typename>
typename Predicate>
346 template <
template <
typename>
typename Predicate,
typename... Ts>
347 using filter_t =
typename filter<Predicate, Ts...>::type;
350 template <
template <
typename...>
typename T,
typename... Ts>
353 using type = T<Ts...>;
356 template <
template <
typename...>
typename T,
typename... Ts>
357 using convert_t =
typename convert<T, Ts...>::type;
360 template <
template <
typename>
typename F,
typename... Ts>
363 template <
template <
typename...>
typename C,
template <
typename>
typename F,
typename Head,
typename... Ts>
369 template <
template <
typename...>
typename C,
template <
typename>
typename F>
375 template <
template <
typename>
typename F,
typename... Ts>
376 using transform_t =
typename transform<F, Ts...>::type;
379 template <
typename... Lists>
382 template <
template <
typename...>
class C,
typename... Ts>
385 using type = C<Ts...>;
388 template <
template <
typename...>
class C,
typename... Ts,
typename... Us>
391 using type = C<Ts..., Us...>;
394 template <
typename T,
typename U,
typename V,
typename... O>
400 template <
typename... Lists>
401 using concat_t =
typename concat<Lists...>::type;
404 template <
typename List>
407 template <
template <
typename...>
class C,
typename... Ts>
410 using type =
typename concat<Ts...>::type;
413 template <
template <
typename...>
class C>
419 template <
typename List>
423 template <
template<
typename,
typename>
typename Matcher,
typename L1,
typename L2>
426 template <
template <
typename,
typename>
typename Matcher,
template <
typename...>
typename C,
typename T,
typename U,
typename... Ts,
typename... Us>
427 struct match<Matcher, C<T, Ts...>, C<U, Us...>>
429 static constexpr bool value = Matcher<T, U>::value &&
match<Matcher, C<Ts...>, C<Us...>>::value;
432 template <
template <
typename,
typename>
typename Matcher,
template <
typename...>
typename C>
435 static constexpr bool value =
true;
438 template <
template<
typename,
typename>
typename Matcher,
typename L1,
typename L2>
Definition type_seq.h:174
Definition type_seq.h:380
Definition type_seq.h:352
Definition type_seq.h:212
Definition type_seq.h:193
Definition type_seq.h:331
Definition type_seq.h:405
Definition type_seq.h:231
Definition type_seq.h:424
Definition type_seq.h:155
Definition type_seq.h:142
Definition type_seq.h:129
Definition type_seq.h:116
Definition type_seq.h:287
Definition type_seq.h:256
Definition type_seq.h:312