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> {});
115 template<
typename Type,
template<
typename...>
class List,
typename... Args>
116 constexpr
bool HasType (List<Args...>)
118 return (std::is_same_v<Type, Args> || ...);
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>
163 template<
typename F,
typename G,
typename Def,
typename Head,
typename... Args>
169 if constexpr (
sizeof... (Args) > 0)
177 template<
template<
typename>
class Name,
typename Def,
typename... Args>
180 template<
template<
typename>
class Name,
typename Def,
typename T,
typename... Rest>
181 struct Find<Name, Def, T, Rest...> :
Find<Name, Def, Rest...> {};
183 template<
template<
typename>
class Name,
typename Def,
typename T,
typename... Rest>
184 struct Find<Name, Def, Name<T>, Rest...>
189 template<
template<
typename>
class Name,
typename Def>
196 template<
template<
typename>
class Name,
typename Def,
typename... Args>
Filter_t< Pred, List< Tail... > > Result_t
constexpr List Reverse(List<>)
Container< T > Concat(const Container< Container< T >> &containers)
Container< T > Filter(const Container< T > &c, F f)
constexpr detail::ExprTree< detail::ExprType::LeafStaticPlaceholder, detail::MemberPtrs< Ptr > > f
decltype(Concat(List< Head > {}, Filter_t< Pred, List< Tail... > > {})) Result_t
typename DropImpl< N - 1, decltype(Tail(List {}))>::Result_t Result_t
Type
Describes the various types of XDG .desktop files.
constexpr List< T... > Tail(List< H, T... >)
typename detail::Find< Name, Def, Args... >::type Find
typename Head< List >::Head_t Head_t
constexpr detail::DropImpl< N, List< Args... > >::Result_t Drop(List< Args... >)
typename AsTypelist< T >::Result_t AsTypelist_t
auto FirstMatching(F f, G g, Def def, Util::Typelist< Head, Args... >)