LINUX.ORG.RU

История изменений

Исправление Ower, (текущая версия) :

C++17 §17.6.5.6 (332)

A class template partial specialization may be declared in any scope in which the corresponding primary template may be defined (10.3.1.2, 12.2, 17.6.2). [ Example:

template<class T> 
struct A {
  struct C {
    template<class T2> struct B { };
    template<class T2> struct B<T2**> { }; // partial specialization #1
  };
};

Здесь указано, что он применен также к C++14, а clang поддерживает во всех режимах, на что и указывал тот комментатор.

Хотя,

that does not seem to have been approved as a DR

предполагает, что и для 14 не применено, но это сути не меняет.

Исходная версия Ower, :

C++17 §17.6.5.6 (332)

A class template partial specialization may be declared in any scope in which the corresponding primary template may be defined (10.3.1.2, 12.2, 17.6.2). [ Example:

template<class T> 
struct A {
  struct C {
    template<class T2> struct B { };
    template<class T2> struct B<T2**> { }; // partial specialization #1
  };
};

Здесь указано, что он применен также к C++14, а clang поддерживает во всех режимах, на что и указывал тот комментатор.