decltype (decltype)
decltype
— ключевое слово языка программирования C++, которое появилось в обновлённом стандарте C++11. Наряду с ключевым словом auto
оно используется для выведения типов выражений, получаемых в качестве своего аргумента.
Ключевое слово decltype
нашло широкое распространение при работе с обобщёнными типами данных. Различие между decltype
и auto
сводится к типу возвращаемого значения: результат использования auto
теряет квалификаторы типов const
и &
, а результат использования decltype
сохраняет их для дальнейшей работы[1][2].
Также в стандарте C++11 ключевое слово decltype
можно использовать для объявления типа возвращаемого функцией значения в тех случаях, когда применяется новый способ записи сигнатуры функции (в котором возвращаемое значение следует за списком её параметров)[3].
В обновлённом стандарте языка C++14 появилась возможность объявлять переменные со спецификатором типа decltype(auto)
, который предписывает компилятору выбирать для них тип данных на основе типа инициализатора[4].
Примечания
[править | править код]- ↑ Gregoire, 2018, The decltype Keyword, p. 40.
- ↑ Gregoire, 2018, Return Type of Function Templates, p. 405.
- ↑ Olsson, 2018, Auto and Decltype, p. 60.
- ↑ 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.