Open GuillaumeDua opened 7 months ago
TODO: any_of + bind std::disjunction<std::is_same<placeholder, Us>>
any_of
std::disjunction<std::is_same<placeholder, Us>>
See https://godbolt.org/z/edvTWcPj4
template <typename T, typename U> struct contains_any_of; template <template <typename...> typename pack, typename ... Ts, typename ... Us> struct contains_any_of<pack<Ts...>, pack<Us...>> : std::integral_constant< bool, (std::is_same_v<std::tuple<Us...>, std::tuple<Ts>> or ...) > {}; template <typename T, typename U> constexpr auto contains_any_of_v = contains_any_of<T, U>::value;
struct A{};struct B{};struct C{}; int main() { static_assert(contains_any_of_v< std::tuple<A,B,C>, std::tuple<A> >); static_assert(contains_any_of_v< std::tuple<A,B,C>, std::tuple<B> >); static_assert(contains_any_of_v< std::tuple<A,B,C>, std::tuple<C> >); }
TODO:
any_of
+ bindstd::disjunction<std::is_same<placeholder, Us>>
See https://godbolt.org/z/edvTWcPj4