46 template<
template<
typename...>
class List,
typename H,
typename... T>
52 template<
typename List>
55 template<
template<
typename...>
class List,
typename H,
typename... T>
56 constexpr List<T...>
Tail (List<H, T...>)
63 template<
int N,
typename List>
69 template<
typename List>
76 template<
int N,
template<
typename...>
class List,
typename... Args>
82 template<
template<
typename...>
class List,
typename... Args1,
typename... Args2>
83 constexpr List<Args1..., Args2...>
Concat (List<Args1...>, List<Args2...>)
88 template<
template<
typename...>
class List>
94 template<
template<
typename...>
class List,
typename Head,
typename...
Tail>
102 template<
template<
typename...>
class List,
typename Tuple,
size_t... Is>
103 constexpr
auto InitImpl (std::integer_sequence<size_t, Is...>)
105 return List<std::tuple_element_t<Is, Tuple>...> {};
109 template<
template<
typename...>
class List,
typename... Args>
110 constexpr
auto Init (List<Args...>)
112 return detail::InitImpl<List, std::tuple<Args...>> (std::make_index_sequence<
sizeof... (Args) - 1> {});
117 template<
typename Type,
template<
typename...>
class List,
typename...
Tail>
118 constexpr
bool HasTypeImpl (List<Type, Tail...>,
int)
123 template<
typename,
template<
typename...>
class List>
124 constexpr
bool HasTypeImpl (List<>,
float)
129 template<
typename Type,
template<
typename...>
class List,
typename Head,
typename...
Tail>
130 constexpr
bool HasTypeImpl (List<Head, Tail...>,
float)
132 return HasTypeImpl<Type> (List<
Tail...> {}, 0);
136 template<
typename Type,
template<
typename...>
class List,
typename... Args>
137 constexpr
bool HasType (List<Args...> list)
139 return detail::HasTypeImpl<Type> (list, 0);
144 template<
template<
typename>
class,
typename,
typename =
void>
148 template<
template<
typename>
class Pred,
typename List>
149 using Filter_t =
typename detail::Filter<Pred, List>::Result_t;
153 template<
template<
typename>
class Pred,
template<
typename...>
class List,
typename Head,
typename...
Tail>
159 template<
template<
typename>
class Pred,
template<
typename...>
class List,
typename Head,
typename...
Tail>
165 template<
template<
typename>
class Pred,
template<
typename...>
class List>
175 template<
template<
typename...>
class OtherList,
typename... Args>
184 template<
typename F,
typename G,
typename Def,
typename Head,
typename... Args>
190 if constexpr (
sizeof... (Args) > 0)
constexpr List< T... > Tail(List< H, T... >)
constexpr detail::ExprTree< detail::ExprType::LeafStaticPlaceholder, detail::MemberPtrs< Ptr > > f
auto FirstMatching(F f, G g, Def def, Util::Typelist< Head, Args... >)
constexpr List Reverse(List<>)
Filter_t< Pred, List< Tail... > > Result_t
typename Head< List >::Head_t Head_t
Container< T > Concat(const Container< Container< T >> &containers)
typename DropImpl< N - 1, decltype(Tail(List {}))>::Result_t Result_t
Type
Describes the various types of XDG .desktop files.
Container< T > Filter(const Container< T > &c, F f)
decltype(Concat(List< Head > {}, Filter_t< Pred, List< Tail... > > {})) Result_t
constexpr detail::DropImpl< N, List< Args... > >::Result_t Drop(List< Args... >)
typename AsTypelist< T >::Result_t AsTypelist_t