В контексте, где должен быть выведен тип результата вызова функции, C++, похоже, более рад нам помочь, предоставляя (по крайней мере, насколько мне известно следующие два решения):О различных способах получения типа результата функции
result of типа черта:
std::result_of<F(Args...)>::type
синтаксис ядра языка:
decltype(std::declval<F>()(std::declval<Args>()...);
Мой вопрос: Есть ли разница между двумя? Есть ли контекст, в котором нельзя заменить другого, и если бы не нам нужна черта типа, чтобы сделать что-то, что язык мог сделать из коробки?
На самом деле, я не уверен, что это боян. [Этот] (http://stackoverflow.com/q/2689709/2069064) в целом относится к 'decltype'. Это специально в контексте вызова функции. – Barry