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