result_of Class
Возвращаемый тип программу-оболочкуого вызываемые при создании объекта.
template<class Ty>
struct result_of {
typedef T0 type;
};
Параметры
- Ty
Описание вызовов функции (см. раздел примeчаний).
Заметки
Класс-шаблон определяет его элемента type как синоним для типа возвращаемого значения вызова функции, описанного соответствующим аргументом Ty шаблона.Аргумент шаблона должен быть формы Fty(T1, T2, ..., TN), где Fty вызываемые тип.Шаблон определяет возвращаемый тип, в соответствии с первым из следующих правил, которое применяется.
если Fty указатель функции тип R(*)(U1, U2, ..., UN), то возвращаемый тип R;
если Fty ссылка на тип R(&)(U1, U2, ..., UN), то функции возвращаемый тип R;
если Fty указатель на тип R(U1::*)(U2, ..., UN), функции-члена возвращаемый тип R;
если Fty указатель на тип R U1::*, то возвращаемый тип элемента данных R;
если Fty класс typedef, то член с result_type возвращаемый тип Fty::result_type;
если N 0 (то есть Ty формы Fty()) возвращаемый тип void;
если шаблон с Fty класс с именем члена result, то возвращаемый тип Fty::result<T1, T2, ..., TN>::type;
во всех остальных случаях ошибка.
Пример
// std_tr1__functional__result_of.cpp
// compile with: /EHsc
#include <functional>
#include <iostream>
double square(double x)
{
return (x * x);
}
template<class Fun,
class Arg>
void test_result(const Fun& fun, Arg arg)
{
typename std::result_of<Fun(Arg)>::type val = fun(arg);
std::cout << "val == " << val << std::endl;
}
int main()
{
test_result(&square, 3.0);
return (0);
}
Требования
заголовок: <functional>
std пространство имен: