Udostępnij za pośrednictwem


result_of Class

Typ zwrotu opakowanego obiektu wpłacone.

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

Parametry

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

Uwagi

Klasa szablonu określa jej członek type jako synonim zwracany typ wywołania funkcji opisanych przez argument jej szablonu Ty.Argument szablon formularza musi być Fty(T1, T2, ..., TN), gdzie Fty jest typem wpłacone.Szablon określa zwracany typ zgodnie z pierwszym następujące zasady, stosuje się:

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

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

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

  • Jeśli Fty jest wskaźnik do danych typu R U1::* jest zwracany typ R;

  • Jeśli Fty jest klasą z typedef Członkowskie result_type jest zwracany typ Fty::result_type;

  • Jeśli N jest 0 (czyli Ty ma postać Fty()) jest zwracany typ void;

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

  • w pozostałych przypadkach jest błąd.

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>

Obszar nazw: std