Использование template-name вместо template-id внутри определения шаблона класса

Является ли следующий код на C++ корректным? И если да, то может ли кто-нибудь указать мне на параграф в стандарте, где об этом говорится? Кажется, что можно использовать template-name вместо template-id в области видимости, заключенной в template, и компилятор автоматически добавит список аргументов шаблона.

template<class Type>
class Mana {
public:
  Mana(const Mana& m) {/*...*/}
  Mana() {/*...*/}
};

в отличие от:

template<class Type>
class Mana {
public:
  Mana(const Mana<Type>& m) {/*...*/}
  Mana() {/*...*/}
};

Код компилируется как в g++, так и в MS visual studio.

6
задан mgregor 20 December 2011 в 10:31
поделиться