result_of Class
Le type de retour d'un objet appelé encapsulé.
template<class Ty>
struct result_of {
typedef T0 type;
};
Paramètres
- Ty
Une description d'un appel de fonction (consultez la section Notes).
Notes
La classe de modèle définit son type membre comme synonyme pour le type de retour d'un appel de fonction décrit par son argument template Ty.L'argument template doit être du formulaire Fty(T1, T2, ..., TN), où Fty est un type peut être appelé.Le modèle détermine le type de retour après le premier les règles suivantes s'appliquent :
si Fty est un pointeur pour exécuter le type R(*)(U1, U2, ..., UN) le type de retour est R;
si Fty est une référence au type R(&)(U1, U2, ..., UN) fonction de le type de retour est R;
si Fty est un pointeur vers le type R(U1::*)(U2, ..., UN) de fonction membre le type de retour est R;
si Fty est un pointeur vers le type R U1::* de membre le type de retour est R;
si Fty est une classe avec un typedef result_type de membre le type de retour est Fty::result_type;
si N est 0 (autrement dit, Ty est de la forme Fty()) que le type de retour est void;
si Fty est une classe avec un modèle membre nommé result le type de retour est Fty::result<T1, T2, ..., TN>::type;
dans tous les autres cas c'est une erreur.
Exemple
// 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);
}
Configuration requise
en-tête : <functional>
l'espace de noms : DST