result_of Class
一个包装的可调用对象的返回类型。
template<class Ty>
struct result_of {
typedef T0 type;
};
参数
- Ty
的声明函数调用(请参见"备注"部分)。
备注
如果的返回类型的同义词函数调用描述的由其模板参数 Ty,模板选件类定义其成员 type。模板参数必须是窗体 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