aboutsummaryrefslogtreecommitdiff
path: root/src/list/operation/higher/remove.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/list/operation/higher/remove.h')
-rw-r--r--src/list/operation/higher/remove.h21
1 files changed, 8 insertions, 13 deletions
diff --git a/src/list/operation/higher/remove.h b/src/list/operation/higher/remove.h
index e67e962..598f5a6 100644
--- a/src/list/operation/higher/remove.h
+++ b/src/list/operation/higher/remove.h
@@ -7,18 +7,10 @@ namespace tav {
namespace detail {
-template <
- template<typename> class Predicate,
- typename List
->
-class Remove {
- private:
- template <typename Element>
- using predicate_negator = Not<Predicate<Element>>;
-
- public:
- typedef tav::Filter<predicate_negator, List> type;
-
+template <template<typename> class Predicate>
+struct predicate_negator {
+ template <typename Element>
+ using function = Not<Predicate<Element>>;
};
}
@@ -27,7 +19,10 @@ template <
template<typename> class Predicate,
typename List
>
-using Remove = Eval<detail::Remove<Predicate, List>>;
+using Remove = Filter<
+ detail::predicate_negator<Predicate>::template function,
+ List
+>;
}