Возможный дубликат:
Официально, для чего предназначено имя типа? а>
Когда я использую
template <typename TMap>
typename TMap::referent_type * func(TMap & map, typename TMap::key_type key)
{ ... }
какова цель двух "имен" во второй строке?
Кажется, это вызывает предупреждение во время компиляции (VS2008: C4346), но это только "вы утверждаете, что это тип"?
т. е. фактическая проверка того, действительно ли TMap::referent_type
является типом, выполняется при создании экземпляра шаблона, но по-прежнему существует требование стандарта С++, но код анализируется правильно независимо от него.
Существуют ли какие-либо примеры, когда имя типа действительно требуется для устранения неоднозначности? Или есть еще что-то?
T::SubType * p
будет проанализировано как арифметическое выражение. --- Я не заметил, что у меня есть тег C++, но я знаю, что C++ все еще удивляет меня примерно раз в месяц. - person peterchen   schedule 17.08.2010