Пространства имён
Варианты
Действия

Ключевые слова C++: typename

Материал из cppreference.com

<metanoindex/>

 
 
Язык С++
Общие темы
Управление потоком
Операторы условного выполнения
if
Операторы итерации (циклы)
Операторы перехода
Функции
Объявление функции
Выражение лямбда-функции
Спецификатор inline
Спецификации динамических исключений (до C++17*)
Спецификатор noexcept (C++11)
Исключения
Пространства имён
Типы
Спецификаторы
decltype (C++11)
auto (C++11)
alignas (C++11)
Спецификаторы длительности хранения
Инициализация
Выражения
Альтернативные представления
Литералы
Логические - Целочисленные - С плавающей запятой
Символьные - Строковые - nullptr (C++11)
Определяемые пользователем (C++11)
Утилиты
Атрибуты (C++11)
Types
Объявление typedef
Объявление псевдонима типа (C++11)
Casts
Неявные преобразования - Явные преобразования
static_cast - dynamic_cast
const_cast - reinterpret_cast
Выделение памяти
Классы
Свойства функции класса
explicit (C++11)
static
Специальные функции-элементы
Шаблоны
Разное
 
 

Статистика

  • В Шаблон класса или Функция шаблона, typename может быть использован в качестве альтернативы класса объявить шаблонного типа.
    Оригинал:
    In a Шаблон класса or Функция шаблона, typename can be used as an alternative to класса to declare templated types.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • Внутри определения шаблона, typename может быть использован для заявляю, что зависимые имя типа.
    Оригинал:
    Inside a template definition, typename can be used to declare that a dependent name is a type.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Пример

template <typename T>
void foo (const std::vector<T> &v)
{
    // std::vector<T>::const_iterator is a dependent name,
    // so using it as a type requires the addition of the
    // typename keyword
    typename std::vector<T>::const_iterator it = v.begin();
}