5#ifndef V8_BASE_TEMPLATE_META_PROGRAMMING_LIST_H_
6#define V8_BASE_TEMPLATE_META_PROGRAMMING_LIST_H_
30template <
typename List>
32template <
typename... Ts>
34 : std::integral_constant<size_t, sizeof...(Ts)> {};
37 : std::integral_constant<size_t, sizeof...(Ts)> {};
39template <
typename List,
size_t Index>
41template <
typename Head,
typename... Tail>
45template <
typename Head,
typename... Tail,
size_t Index>
49template <
template <
typename>
typename F,
typename List>
51template <
template <
typename>
typename F,
typename... Ts>
56template <
size_t I,
size_t Otherwise,
typename T,
typename List>
58template <
size_t I,
size_t Otherwise,
typename T,
typename Head,
61 :
public index_of_impl<I + 1, Otherwise, T, list<Tail...>> {};
62template <
size_t I,
size_t Otherwise,
typename T,
typename... Tail>
64 :
public std::integral_constant<size_t, I> {};
65template <
size_t I,
size_t Otherwise,
typename T>
67 :
public std::integral_constant<size_t, Otherwise> {};
69template <
size_t I,
size_t Otherwise, TYPENAME1 T,
typename List1>
77 :
public std::integral_constant<size_t, I> {};
78template <
size_t I,
size_t Otherwise, TYPENAME1 T>
80 :
public std::integral_constant<size_t, Otherwise> {};
82template <
typename List,
typename Element>
84template <
typename... Ts,
typename Element>
86 : std::bool_constant<(equals<Ts, Element>::value || ...)> {};
88template <
typename List, TYPENAME1 Element>
92 : std::bool_constant<(equals1<Ts, Element>::value || ...)> {};
94template <
typename List,
template <
typename,
typename>
typename Cmp>
96template <
typename Head,
typename... Tail,
97 template <
typename,
typename>
typename Cmp>
99 : std::bool_constant<(Cmp<Head, Tail>::value && ...)> {};
101template <
size_t I,
typename T,
typename Before,
typename After>
103template <
size_t I,
typename T,
typename... Before,
typename Head,
106 :
insert_at_impl<I - 1, T, list<Before..., Head>, list<Tail...>> {};
107template <
size_t I,
typename T,
typename... Before>
111template <
typename T,
typename... Before,
typename Head,
typename... Tail>
116template <
size_t I, TYPENAME1 T,
typename Before,
typename After>
121 :
insert_at1_impl<I - 1, T, list1<Before..., Head>, list1<Tail...>> {};
131template <
template <
typename,
typename>
typename F,
typename T,
typename List>
133template <
template <
typename,
typename>
typename F,
typename T,
typename Head,
139template <
template <
typename,
typename>
typename F,
typename T>
144template <
template <TYPENAME1,
typename>
typename F,
typename T,
typename List1>
146template <
template <TYPENAME1,
typename>
typename F,
typename T,
TYPENAME1 Head,
152template <
template <TYPENAME1,
typename>
typename F,
typename T>
160template <
typename List>
162template <
typename List>
164template <
typename List1>
166template <
typename List1>
170template <
typename List,
size_t Index>
172template <
typename List,
size_t Index>
177template <
template <
typename>
typename F,
typename List>
179template <
template <
typename>
typename F,
typename List>
184template <
typename List,
typename T,
185 size_t Otherwise = std::numeric_limits<size_t>::max()>
187template <
typename List,
typename T,
188 size_t Otherwise = std::numeric_limits<size_t>::max()>
191 size_t Otherwise = std::numeric_limits<size_t>::max()>
194 size_t Otherwise = std::numeric_limits<size_t>::max()>
198template <
typename List,
typename T>
200template <
typename List,
typename T>
202template <
typename List1, TYPENAME1 T>
204template <
typename List1, TYPENAME1 T>
209template <
typename List,
template <
typename,
typename>
typename Cmp =
equals>
211template <
typename List,
template <
typename,
typename>
typename Cmp =
equals>
217template <
typename List,
size_t I,
typename T>
219template <
typename List,
size_t I,
typename T>
221template <
typename List1,
size_t I, TYPENAME1 T>
223template <
typename List1,
size_t I, TYPENAME1 T>
232template <
template <
typename,
typename>
typename F,
typename List,
typename T>
234template <
template <
typename,
typename>
typename F,
typename List,
typename T>
236template <
template <TYPENAME1,
typename>
typename F,
typename List1,
typename T>
238template <
template <TYPENAME1,
typename>
typename F,
typename List1,
typename T>
typename map< F, List >::type map_t
constexpr size_t length_v
fold_right1< F, List1, T >::type fold_right1_t
constexpr bool all_equal_v
constexpr bool contains1_v
insert_at1< List1, I, T >::type insert_at1_t
constexpr size_t length1_v
constexpr size_t index_of_v
constexpr size_t index_of1_v
typename element< List, Index >::type element_t
insert_at< List, I, T >::type insert_at_t
constexpr bool contains_v
fold_right< F, List, T >::type fold_right_t
#define I(name, number_of_args, result_size)
F< Head, typename fold_right1_impl< F, T, list1< Tail... > >::type >::type type
F< Head, typename fold_right_impl< F, T, list< Tail... > >::type >::type type