РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
44 of 815 menu

Оператор decltype

Оператор decltype возвращает тип выражения или переменной на этапе компиляции. В качестве параметра оператор принимает выражение или имя переменной, тип которого необходимо определить. Результат работы decltype можно использовать везде, где требуется указать тип: при объявлении переменных, в шаблонах, в возвращаемых типах функций и так далее. В отличие от auto, оператор decltype не отбрасывает ссылки и квалификаторы const.

Синтаксис

decltype(expression) decltype(variable)

Пример

Давайте определим тип переменной a и создадим новую переменную b того же типа:

#include <iostream> using namespace std; int main() { int a = 5; decltype(a) b = 10; cout << a << " " << b << endl; return 0; }

Результат выполнения кода:

5 10

Пример

Давайте выведем тип выражения с помощью decltype и typeid. Обратите внимание, что decltype сохраняет ссылки:

#include <iostream> #include <typeinfo> using namespace std; int main() { int a = 5; int& ref = a; cout << typeid(decltype(a)).name() << endl; cout << typeid(decltype(ref)).name() << endl; cout << typeid(decltype(a + 1)).name() << endl; return 0; }

Результат выполнения кода:

"i" "i" "i"

Пример

Давайте используем decltype в шаблонной функции, чтобы вывести тип переданного аргумента:

#include <iostream> using namespace std; template <typename T> void printType(T value) { decltype(value) copy = value; cout << copy << endl; } int main() { printType(42); printType(3.14); return 0; }

Результат выполнения кода:

42 3.14

Смотрите также

  • ключевое слово auto,
    которое автоматически выводит тип переменной
  • оператор sizeof,
    который возвращает размер типа в байтах
  • оператор typeid,
    который возвращает информацию о типе
  • ключевое слово constexpr,
    которое вычисляет значение на этапе компиляции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить