Я не могу понять, почему стандарт определяет первый шаблон экземпляра для шаблонов следующим N3797::14.7/4 [temp.spec]
:неявной конкретизации специализации
Акт инстанцировании функции, класс, член класса шаблон или шаблон-член template экземпляр.
Но далее везде он использует instatiation специализации, как следующий N3797::14.7/4 [temp.spec]
:
проиллюстрированный специализации шаблона может быть либо неявно экземпляр (14.7.1) для список заданных аргументов или явно указывается (14.7.2).
Я этого не понимаю. Сам шаблон - это другое понятие, чем шаблонная спецификация, которая может быть explicit specialization
или partial specialization
. Например N3797::14.5.5/1 [temp.class.spec]
:
Первичный шаблон должен быть объявлен до любых специализаций , что шаблон.
Мой вопрос в том, почему стандарт сначала объявляет концепцию для шаблонов instatiation
, но в дополнение к ней применяется эта концепция для специализированных шаблонов?
Кроме того N3797::14.7/4 [temp.spec]
определяет понятие специализации следующим образом:
специализации является членом класса, функции или класса, который является либо экземпляром или явно специализированным (14.7.3).
Итак, частичная специализация не специализация, не так ли? Я полностью смущен этими понятиями. Не могли бы вы это немного разъяснить?
спасибо. Проблема в том, что это просто не совсем ясно описано в Стандарте. –
Просто посмотрите на различия. Формально шаблон и их специализация - разные вещи, и к ним следует относиться по-разному. Разумеется, если мы предположим, что шаблонное статирование, определенное в 'N3797 :: 14.7/4 [temp.spec]', полностью совпадает с экземпляром специализированной специализации, тогда это будет нормально. –
@ DmitryFucintv, добро пожаловать. –