#ifndef TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_SORT_H_ #define TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_SORT_H_ #include "list/operation/concatenate.h" #include "list/operation/delete_nth.h" #include "list/operation/higher/partition.h" #include "function/apply.h" namespace tav { namespace detail { template < template class Comparator, typename Sequence > class Sort { private: using index = Divide, Size<2>>; using pivot = tav::Nth; using partitions = Partition< Apply::template function, DeleteNth >; using lhs = tav::Car; using rhs = tav::Cdr; public: using type = Concatenate< tav::List< Eval>, tav::List, Eval> > >; }; template class Comparator> struct Sort { typedef void type; }; } template < template class Comparator, typename Sequence > using Sort = Eval>; } #endif // TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_SORT_H_