Можно ли использовать ключевое слово struct
, чтобы специализировать класс шаблона, объявленный с ключевым словом class
? Минимальный, полный, проверяемый пример:
template <class T>
class X {};
template <>
struct X<int> {}; // explicit specialization (full specialization)
template <class T>
struct X<X<T>> {}; // partial specialization
Этот код компилируется на GCC 8.3 и Clang 8.0 .
Какое отношение к этому имеет стандарт? Цитата из стандарта с объяснением приветствуется.