Ключевое слово decltype( ) служит для того, чтобы в compile-time определять тип выражения, заданного в его скобках, и на месте себя вставлять в код вычисленный тип.
Слово впервые появилось в стандарте C++11. Используется в шаблонах.
Вот пример определения шаблонной функции:
template<typename anyClass>
decltype( anyClass().someMethod(2.67) ) someFunction(const anyClass&);
В данном коде в качестве типа возвращаемого значения функции someFunction() будет тип, который возвращает метод someMethod() класса anyClass. Причем в качестве типа возвращаемого значения будет выбран тип, соответствующий методу, который работает с числами с плавающей точкой.