decltype
— ключевое слово языка программирования C++, которое появилось в обновлённом стандарте C++11. Наряду с ключевым словом auto
оно используется для выведения типов выражений, получаемых в качестве своего аргумента.
Ключевое слово decltype
нашло широкое распространение при работе с обобщёнными типами данных. Различие между decltype
и auto
сводится к типу возвращаемого значения: результат использования auto
теряет квалификаторы типов const
и &
, а результат использования decltype
сохраняет их для дальнейшей работы[1][2].
Также в стандарте C++11 ключевое слово decltype
можно использовать для объявления типа возвращаемого функцией значения в тех случаях, когда применяется новый способ записи сигнатуры функции (в котором возвращаемое значение следует за списком её параметров)[3].
В обновлённом стандарте языка C++14 появилась возможность объявлять переменные со спецификатором типа decltype(auto)
, который предписывает компилятору выбирать для них тип данных на основе типа инициализатора[4].
Примечания
Источники