#ifndef TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_SORT_H_ #define TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_SORT_H_ #include "filter.h" #include "list/operation/concatenate.h" namespace tav { template < template class Comparator, typename Sequence > class Sort { private: using index = Divide::type, Size<2>>; using pivot = typename Nth::type; using sequence_sans_pivot = typename Append< typename Take::type, typename Drop>, Sequence>::type >::type; template using comparator_wrapper = Comparator; using lhs = typename Filter::type; using rhs = typename Remove::type; public: typedef typename Concatenate< typename List< typename Sort::type, typename List::type, typename Sort::type >::type >::type type; }; template class Comparator> struct Sort { typedef void type; }; } #endif // TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_SORT_H_