Sdílet prostřednictvím


result_of Class

Návratový typ obtékaným objektem callable.

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

Parametry

  • Ty
    Popis volání funkce (viz poznámky oddílu).

Poznámky

Šablona třídy definuje její členské type jako synonymum pro návratový typ volání funkce popsaná svůj argument šablona Ty.Argument šablona formuláře musí být Fty(T1, T2, ..., TN), kde Fty je typ callable.Šablona určuje typ vrácení podle první následující pravidla, která se týká:

  • Pokud Fty je ukazatel na typ funkce R(*)(U1, U2, ..., UN) návratový typ je R;

  • Pokud Fty je odkaz na typ funkce R(&)(U1, U2, ..., UN) návratový typ je R;

  • Pokud Fty je ukazatel na funkci typ členu R(U1::*)(U2, ..., UN) návratový typ je R;

  • Pokud Fty je ukazatel na datový typ členu R U1::* návratový typ je R;

  • Pokud Fty je třída s typedef členské result_type návratový typ je Fty::result_type;

  • Pokud N je 0 (, Ty formuláře je Fty()) je typ vrácení void;

  • Pokud Fty je třída šablonou člen s názvem result návratový typ je Fty::result<T1, T2, ..., TN>::type;

  • v ostatních případech je chyba.

Příklad

 

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

Požadavky

Záhlaví: <functional>

Obor názvů: std