result_of Class
Il tipo restituito di un oggetto chiamabile di cui è stato eseguito il wrapping.
template<class Ty>
struct result_of {
typedef T0 type;
};
Parametri
- Ty
Una descrizione di una chiamata di funzione (vedere la sezione relativa alle osservazioni).
Note
La classe modello definisce il membro type come un sinonimo del tipo restituito di una chiamata di funzione descritta dal relativo argomento di modello Ty.Un argomento di template deve essere nel formato Fty(T1, T2, ..., TN), in cui Fty è un tipo essere chiamato.Il modello determina il tipo restituito come il primo delle seguenti regole da applicare:
se Fty è un puntatore a funzione tipo R(*)(U1, U2, ..., UN) il tipo restituito è R;
se Fty è un riferimento al tipo di funzione R(&)(U1, U2, ..., UN) il tipo restituito è R;
se Fty è un puntatore al tipo R(U1::*)(U2, ..., UN) funzione membro del tipo restituito è R;
se Fty è un puntatore al tipo R U1::* del membro dati il tipo restituito è R;
se Fty è una classe con un typedef result_type membro del tipo restituito è Fty::result_type;
se N è 0 (ovvero Ty è nel formato Fty()) che il tipo restituito è void;
se Fty è una classe con un modello di membro denominato result il tipo restituito è Fty::result<T1, T2, ..., TN>::type;
in tutti gli altri casi di errore.
Esempio
// 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);
}
Requisiti
intestazione: <functional>
Spazio dei nomi: deviazione standard