43 template<
template<
typename...>
class List,
typename H,
typename... T>
44 constexpr List<T...>
Tail (List<H, T...>)
51 template<
int N,
typename List>
57 template<
typename List>
64 template<
int N,
template<
typename...>
class List,
typename... Args>
70 template<
template<
typename...>
class List,
typename... Args1,
typename... Args2>
71 constexpr List<Args1..., Args2...>
Concat (List<Args1...>, List<Args2...>)
76 template<
template<
typename...>
class List>
82 template<
template<
typename...>
class List,
typename Head,
typename...
Tail>
88 template<
template<
typename...>
class List,
typename... Args>
89 constexpr
auto Init (List<Args...>) -> decltype (
Reverse (
Tail (
Reverse (List<Args...> {}))))
96 template<
typename Type,
template<
typename...>
class List,
typename...
Tail>
97 constexpr
bool HasTypeImpl (List<Type, Tail...>,
int)
102 template<
typename,
template<
typename...>
class List>
103 constexpr
bool HasTypeImpl (List<>,
float)
108 template<
typename Type,
template<
typename...>
class List,
typename Head,
typename...
Tail>
109 constexpr
bool HasTypeImpl (List<Head, Tail...>,
float)
111 return HasTypeImpl<Type> (List<
Tail...> {}, 0);
115 template<
typename Type,
template<
typename...>
class List,
typename... Args>
116 constexpr
bool HasType (List<Args...> list)
118 return detail::HasTypeImpl<Type> (list, 0);
123 template<
template<
typename>
class,
typename,
typename =
void>
127 template<
template<
typename>
class Pred,
typename List>
128 using Filter_t =
typename detail::Filter<Pred, List>::Result_t;
132 template<
template<
typename>
class Pred,
template<
typename...>
class List,
typename Head,
typename...
Tail>
138 template<
template<
typename>
class Pred,
template<
typename...>
class List,
typename Head,
typename...
Tail>
144 template<
template<
typename>
class Pred,
template<
typename...>
class List>
154 template<
template<
typename...>
class OtherList,
typename... Args>
constexpr List< T... > Tail(List< H, T... >)
constexpr List Reverse(List<>)
Filter_t< Pred, List< Tail... >> Result_t
Container< T > Concat(const Container< Container< T >> &containers)
typename DropImpl< N-1, decltype(Tail(List{}))>::Result_t Result_t
typename std::enable_if< B, T >::type EnableIf_t
Type
Describes the various types of XDG .desktop files.
Container< T > Filter(const Container< T > &c, F f)
constexpr detail::DropImpl< N, List< Args... > >::Result_t Drop(List< Args... >)
decltype(Concat(List< Head >{}, Filter_t< Pred, List< Tail... >>{})) Result_t
typename AsTypelist< T >::Result_t AsTypelist_t