@@ -13,22 +13,44 @@ namespace beman::execution26::detail::meta::detail {
1313template <template <typename > class , typename >
1414struct filter ;
1515
16+ template <template <typename , typename > class , typename , typename >
17+ struct filter_tag ;
18+
1619template <template <typename > class Predicate , template <typename ...> class List >
1720struct filter <Predicate, List<>> {
1821 using type = List<>;
1922};
2023
24+ template <template <typename , typename > class Predicate , typename Tag, template <typename ...> class List >
25+ struct filter_tag <Predicate, Tag, List<>> {
26+ using type = List<>;
27+ };
28+
2129template <template <typename > class Predicate , template <typename ...> class List , typename H, typename ... T>
2230struct filter <Predicate, List<H, T...>> {
2331 using tail = typename beman::execution26::detail::meta::detail::filter<Predicate, List<T...>>::type;
2432 using type = ::std::conditional_t <Predicate<H>::value, ::beman::execution26::detail::meta::prepend<H, tail>, tail>;
2533};
34+
35+ template <template <typename , typename > class Predicate ,
36+ typename Tag,
37+ template <typename ...> class List ,
38+ typename H,
39+ typename ... T>
40+ struct filter_tag <Predicate, Tag, List<H, T...>> {
41+ using tail = typename beman::execution26::detail::meta::detail::filter_tag<Predicate, Tag, List<T...>>::type;
42+ using type =
43+ ::std::conditional_t <Predicate<Tag, H>::value, ::beman::execution26::detail::meta::prepend<H, tail>, tail>;
44+ };
2645} // namespace beman::execution26::detail::meta::detail
2746
2847namespace beman ::execution26::detail::meta {
2948template <template <typename > class Predicate , typename List>
3049using filter = ::beman::execution26::detail::meta::detail::filter<Predicate, List>::type;
31- }
50+
51+ template <template <typename , typename > class Predicate , typename Tag, typename List>
52+ using filter_tag = ::beman::execution26::detail::meta::detail::filter_tag<Predicate, Tag, List>::type;
53+ } // namespace beman::execution26::detail::meta
3254
3355// ----------------------------------------------------------------------------
3456
0 commit comments