diff options
Diffstat (limited to 'src/list/operation/higher/remove.h')
-rw-r--r-- | src/list/operation/higher/remove.h | 21 |
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 +>; } |