Sdílet prostřednictvím


result_of – třída

Návratový typ obtékaným objektem volány.

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

Parametry

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

Poznámky

Třída šablony definuje její člen type jako synonymum pro návratový typ volání funkce popsané argument šablony Ty.Musí být argument šablony formuláře Fty(T1, T2, ..., TN), kde Fty je typ callable.Šablona určuje návratový typ podle první následující pravidla, která platí:

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

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

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

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

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

  • Pokud N 0 (tedy Ty má tvar Fty()) je návratový typ void;

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

  • ve všech ostatních případech se jedná o chybu.

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