12#include <Ponca/src/Common/typeutils.h>
27 template <Ponca::StringLiteral _Name,
class Type>
36 static constexpr const char* name = _name.value;
55 template <
typename EntryList>
59 template <
typename... Ts>
62 using type = std::tuple<
typename Ts::type...>;
66 template <
class Pred,
typename... Ts>
73 using type = std::tuple<>;
77 template <
typename... Tuples>
78 using tuple_cat_t =
decltype(std::tuple_cat(std::declval<Tuples>()...));
81 template <
class Pred,
typename T,
typename... Ts>
84 static constexpr bool keepT = Pred::template value<T>;
85 using head = std::conditional_t<keepT, std::tuple<T>, std::tuple<>>;
86 using tail =
typename filter<Pred, Ts...>::type;
87 using type = tuple_cat_t<head, tail>;
93 template <
class Pred,
typename... Ts>
96 template <
typename Pred,
typename... Ts>
99 using type =
typename filter<Pred, Ts...>::type;
103 template <
template <
typename>
class... Preds>
106 template <
typename T>
107 static constexpr bool value = (Preds<T>::value && ...);
This Source Code Form is subject to the terms of the Mozilla Public License, v.
Default factory templated on Point, Filter and Derivative.
StringLiteral as template parameters.