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
  • Marc Gregoire. Professional C++ : [англ.]. — Fourth Edition. — John Wiley & Sons, 2018. — ISBN 978-1-119-42130-6.
  • Mikael Olsson. C++17 Quick Syntax Reference : A Pocket Guide to the Language, APIs and Library : [англ.]. — Third Edition. — Apress, 2018. — ISBN 978-1-4842-3599-7. — doi:10.1007/978-1-4842-3600-0.