#ifndef TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_MISC_H_ #define TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_MISC_H_ #include "fold.h" #include "list/operation/concatenate.h" #include "conditional/if.h" namespace tav { template < template class Function, typename List > class Map { private: template < typename Current, typename Previous > struct function_wrapper { typedef Cons, Previous> type; }; public: typedef typename Fold::type type; }; template < template class Function, typename List > class Filter { private: template < typename Current, typename Previous > struct function_wrapper { typedef If< Function::type::value, Cons, Previous > type; }; public: typedef typename Fold::type type; }; template class Reverse { private: template < typename Current, typename Previous > struct reversed_concatenate { typedef typename Concatenate< Previous, Cons >::type type; }; public: typedef typename Fold::type type; }; } #endif // TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_MISC_H_