decltype (decltype)

Перейти к навигации Перейти к поиску

decltypeключевое слово языка программирования C++, которое появилось в обновлённом стандарте C++11. Наряду с ключевым словом auto оно используется для выведения типов выражений, получаемых в качестве своего аргумента.

Ключевое слово decltype нашло широкое распространение при работе с обобщёнными типами данных. Различие между decltype и auto сводится к типу возвращаемого значения: результат использования auto теряет квалификаторы типов const и &, а результат использования decltype сохраняет их для дальнейшей работы[1][2].

Также в стандарте C++11 ключевое слово decltype можно использовать для объявления типа возвращаемого функцией значения в тех случаях, когда применяется новый способ записи сигнатуры функции (в котором возвращаемое значение следует за списком её параметров)[3].

В обновлённом стандарте языка C++14 появилась возможность объявлять переменные со спецификатором типа decltype(auto), который предписывает компилятору выбирать для них тип данных на основе типа инициализатора[4].

Примечания

[править | править код]
  1. Gregoire, 2018, The decltype Keyword, p. 40.
  2. Gregoire, 2018, Return Type of Function Templates, p. 405.
  3. Olsson, 2018, Auto and Decltype, p. 60.
  4. placeholder type specifiers (since C++11) Архивная копия от 10 июня 2020 на Wayback Machine en.cppreference.com