Ответ 1
Цитата довольно проста.
X<T>
- это фактическое имя типа:
[C++11: 14.2/6]:
Идентификатор простого шаблона, который называет специализацию шаблона класса, является именем класса (раздел 9).
& hellip; вы можете использовать его везде:
template<typename T>
class X
{
public:
X<T>() {}
~X<T>() {}
X<T>& operator=(const X<T>& rhs) {}
};
int main()
{
X<int> x;
}
Вы можете использовать X
как "стенографию", в которой аргумент шаблона будет автоматически добавлен для вас (kinda):
[C++11: 14.6.1/1]:
Подобно обычным (не шаблонным) классам, шаблоны классов имеют имя с введенным классом (раздел 9). Имя введенного класса может использоваться как имя шаблона или имя типа.. Когда он используется с шаблоном-аргументом-списком, в качестве шаблона-аргумента для шаблона-шаблона шаблона или как окончательный идентификатор в специфицированном спецификаторе типа объявления шаблона класса друга, он относится к самому шаблону класса. В противном случае это эквивалентно имени шаблона, за которым следуют шаблонные параметры шаблона класса, заключенного в<>
.
& hellip, но это, безусловно, нигде не требуется.
Похоже, автор пытается применить руководство по стилю, но сделал это недостаточно ясно, что он полностью зависит от вас.