воскресенье, 1 сентября 2013 г.

Ключевое слово typename

Имена в шаблоне, которые зависят от параметра шаблона, называются зависимыми именами. Зависимое имя внутри класса
называется  вложенным зависимым именем.

-В объявлениях параметров шаблона ключевые слова class и typename взаимозаменяемы.
-Используйте typename для идентификации вложенных зависимых имен типов, если они не встречаются в списке базовых классов или в качестве идентификатора базового класса в списках инициализации членов.
Причина: для разрешения неоднозначности, т.к. в теле функции шаблона вложенное зависимое имя может быть именем типа или статического элемента. По умолчанию анализатор воспринмают такую запись как обращение к статическому элементу, потому, в этом случае, указывать слово typename не нужно. В случае, списка базовых классов однозначно известно, что имя является типом, а в случае инициализации элементов в списке конструктора однозначно известно, что имя есть вложенным элементом.

Источник: Скотт Мэйерс Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ.

По мотивам правила 42.

Комментариев нет:

Отправить комментарий