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