Исправление 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 поддерживает во всех режимах, на что и указывал тот комментатор.