gcc и ключевое слово класса

Я знаю, что ключевые слова typename и class взаимозаменяемы в аргументах шаблона, но я подумал, что только typename разрешено для спецификации вложенных классов.

Однажды я случайно написал неправильно « class » вместо « typename » для вложенного класса. И я обнаружил, что gcc принимает там класс , поэтому вы можете написать что-то вроде:

class std::vector<T>::iterator it;
instead of
typename std::vector<T>::iterator it;

в своем шаблоне.

Это ошибка gcc или стандарт действительно допускает такой синтаксис?

] ОБНОВЛЕНИЕ: пример кода:

template <typename T>
void test()
{
     class std::vector<T>::iterator it;
}
8
задан rip 18 April 2011 в 14:57
поделиться