51 template <
typename T,
typename A0,
typename... A>
52 struct count_type_occurrence<T, A0, A...> : std::integral_constant<int, std::is_base_of_v<T, A0> + count_type_occurrence<T, A...>::value> {};
70 template <
typename T,
typename A0,
typename... A>
71 struct count_type_occurrence_not<T, A0, A...> : std::integral_constant<int, !(std::is_base_of_v<T, A0>)+count_type_occurrence_not<T, A...>::value> {
Number of types in a parameter pack that do not derive from (or are equal to) a given type.
Number of types in a parameter pack that derive from (or are equal to) a given type.