Что такое decltype?
В С оператор decltype используется для определения типа выражения.
Этот опертор был введён в поточной вресии C , и в основном он используется в обобщённом программировании, когда сложно или даже невозможно определить типы, которые будут зависимыи от параметров шаблона.
Исторически подобную функцию в языках программирования (таких как C#, например) называли typeof, но для С было решено выбрать название decltype, котрая по своему названию как-бы давала понять, что она будет возвраща ть именно задекларированный тип выражения, а не просто тип.
decltype был разработан для удобного использования как для разработки обобщённых библиотек, так и для начинающих программистов. Как правило, выведенный тип отвечает типу объекта или функции как только он будет определён в коде.
И также, подобно оператору sizeof, операнд decltype не расчитывается.
Типичный синтаксис оператора decltype:
int i; decltype(i); // int decltype(i 1); // int decltype((i)); // int