что возвращает decltype и как он работает?

337
15 июля 2022, 22:20

Всем здравствуйте. Я начал недавно изучать c++ и столкнулся с оператором decltype. Насколько я знаю, операторы как и функции возвращают определенное значение, но ознакомившись с документацией на сайте microsoft (https://docs.microsoft.com/ru-ru/cpp/cpp/decltype-cpp?view=msvc-160) я увидел следующую строчку "decltype Описатель типа возвращает тип указанного выражения.". Насколько мне известно тип, в качестве возвращаемого значения, не может быть возвращен, но тогда как это происходит? Заранее спасибо, надеюсь вы поможете.

Answer 1

Смотрите, например

int a;
...

Хочу объявить переменную того же типа, что и a...

decltype(a) b;

Грубо - но для понимания сойдет - decltype(a) заменяется типом, с которым была объявлена a - declared type

Answer 2

decltype и не имеет никакого возвращаемого значения, так как это не функция, а часть спецификатора типа. По сути это конструкция, родственная * (делает из типа слева указатель или && (делает из типа слева rvalue ссылку). В отличие от них, delctype делает тот тип, который имеет выражение в круглых скобках. При этом выражение в круглых скобках не является выполняемым (unevaluated context).

READ ALSO
Создание М-мерного дерева на языке Си

Создание М-мерного дерева на языке Си

Здравствуйтe, Хочу написать собственное дерево на языке си, каждый узел которого имеет более двух потомковЯ создал структуру, в которую входит...

258
Ввод переменной типа enum с клавиатуры

Ввод переменной типа enum с клавиатуры

У меня есть класс HealthyFood и enum Fruits{ apple, pear, peach, orange}Я создаю в ранее сказанном классе переменную fruit типа данных Fruits и хочу создать сеттер для...

285
Класс обертка для управления константностью объекта

Класс обертка для управления константностью объекта

У меня есть несколько классов, в которых есть функции lock() и unlock(), которые управляют переменной класса bool lockЕсли lock == true, то объект становится...

214
Ошибки C2440 / E0513 [дубликат]

Ошибки C2440 / E0513 [дубликат]

Учу С++Дошел до классов

196