Осуществление частичной специализацией шаблона параметра шаблона шаблон


У меня возникли проблемы реализации специализации шаблона класса, который использует шаблонные параметры шаблона. Например, я хочу написать класс, который используется для сортировки:

template <template <typename, typename...> class container_type> struct SortTraits {  template <class comparator_type>  static void sort(container_type<size_t> &front, comparator_type comp) {    std::sort(front.begin(), front.end(), comp);  }};template <> struct SortTraits<std::list> {  template <class T, class comparator_type>  static void sort(std::list<T> &front, comparator_type comp) {    front.sort(comp);  }};

Затем я бы назвал это следующим образом:

struct MyFunctor {  bool operator()( const size_t& a, const size_t& b ) const {    return a>b;  }};//! Alias template used for the type of container used to store a fronttemplate <class T> using container_template = std::list<T>;int main(int argc, char *argv[]) {  //! Concrete type for a front  typedef container_template<size_t> front_type;  front_type myContainer = {3,5,2,6,3,6,7};  MyFunctor mySortFunctor;  SortTraits<container_template>::sort(myContainer, mySortFunctor);  for (auto it = myContainer.begin(); it != myContainer.end(); ++it)    cout<<" "<<*it;  cout<<endl;  exit(0);}

Я использую специализации в список, а я бы хотел, чтобы вызвать функцию сортировки, что СТД::список инвентаря. Однако, этот код не работает. Почему шаблон специализации не нашли?

Ошибки я получаю это:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/algorithm:3772:40: error: invalid operands to binary expression ('std::__1::__list_iterator' and 'std::__1::__list_iterator') difference_type __len = __last - __first; ~~~~~~ ^ ~~~~~~~

И это потому, что это не находя специализации.