Udostępnij za pośrednictwem


result_of — Klasa

Zwracany typ obiektu nieopłacona zawinięty.

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

Parametry

  • Ty
    Opis wywołania funkcji (patrz uwagi sekcji).

Uwagi

Klasa szablon definiuje członka type jako synonim zwracany typ wywołania funkcji opisanych przez swego argumentu szablon Ty.Argumentu szablon musi mieć postać Fty(T1, T2, ..., TN), gdzie Fty jest typem wpłacone.Szablon określa zwracany typ zgodnie z pierwszym z poniższych reguł zaokrąglania:

  • Jeśli Fty jest wskaźnikiem do typ funkcji R(*)(U1, U2, ..., UN) typ zwracany jest R;

  • Jeśli Fty jest odwołaniem do typu funkcji R(&)(U1, U2, ..., UN) typ zwracany jest R;

  • Jeśli Fty jest wskaźnikiem do typ funkcji członka R(U1::*)(U2, ..., UN) typ zwracany jest R;

  • Jeśli Fty jest wskaźnikiem do typ danych elementu członkowskiego R U1::* typ zwracany jest R;

  • Jeśli Fty jest klasą z typedef Państwa result_type typ zwracany jest Fty::result_type;

  • Jeśli N jest równa 0 (to znaczy, Ty ma postać Fty()) jest zwracany typ void;

  • Jeśli Fty jest klasą z szablonem członek o nazwie result typ zwracany jest Fty::result<T1, T2, ..., TN>::type;

  • we wszystkich pozostałych przypadkach jest błędem.

Przykład

 

// 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); 
    } 
 
  

Wymagania

Nagłówek: <functional>

Przestrzeń nazw: std