Open GuillaumeDua opened 8 months ago
// count_if - occurences of ttps that satisfy predicate<ttps>::value // Clang: template <typename...> typename predicate instead of template <typename> typename predicate template <template <typename...> typename predicate, typename ... ttps> struct count_if : std::integral_constant< std::size_t, (0 + ... + std::size_t{predicate<ttps>::value}) >{ static_assert(requires { ((predicate<ttps>::value) and ...); }); }; template <template <typename...> typename predicate, template <typename...> typename pack, typename ... ttps> struct count_if<predicate, pack<ttps...>> : count_if<predicate, ttps...>{}; template <template <typename...> typename predicate, typename ... ttps> constexpr std::size_t count_if_v = count_if<predicate, ttps...>::value;