共用方式為


result_of Class

包裝的可呼叫的物件的傳回型別。

template<class Ty>
    struct result_of {
    typedef T0 type;
    };

參數

  • Ty
    函式呼叫 (Function Call) 的描述 (請參閱「備註」一節)。

備註

樣板類別會定義成員的 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 與成員 result_type typedef 類別的傳回型別為 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