Класс result_of
Определяет возвращаемый тип вызываемого типа, который принимает заданные типы аргументов. Добавлено в C++14, устарело в C++17.
Синтаксис
template<class>
struct result_of; // Causes a static assert
template <class Fn, class... ArgTypes>
struct result_of<Fn(ArgTypes...)>;
// Helper type
template<class T>
using result_of_t = typename result_of<T>::type;
Параметры
Fn
Вызываемый тип для запроса.
ArgTypes
Типы списка аргументов к вызываемому типу для запроса.
Замечания
Используйте этот шаблон для определения во время компиляции типа Fn
результата (ArgTypes
), где Fn является вызываемым типом, ссылкой на функцию или ссылку на вызываемый тип, вызываемый с помощью списка аргументов типов в ArgTypes. Член type
шаблона класса называет тип decltype(std::invoke(declval<Fn>(), declval<ArgTypes>()...))
результата, если неоценимое выражение std::invoke(declval<Fn>(), declval<ArgTypes>()...)
хорошо сформировано. В противном случае шаблон класса не имеет члена type
. Тип Fn и все типы в пакете параметров ArgTypes должны быть полными типами или void
массивами неизвестной границы. Не рекомендуется использовать invoke_result в C++17.
Требования
Заголовок:<type_traits>
Пространство имен: std