function::target
Teste si l'objet appelé stocké peut être appelé comme spécifié.
template<class Fty2>
Fty2 *target();
template<class Fty2>
const Fty2 *target() const;
Paramètres
- Fty2
Le type d'objet appelé cible sous test.
Notes
Le type Fty2 doit être appelé pour les types d'argument T1, T2, ..., TN et le type de retour Ret.Si target_type() == typeid(Fty2), la fonction membre de modèle retourne l'adresse de l'objet cible ; sinon, il retourne 0.
Un type Fty2 peut être appelé pour les types d'argument T1, T2, ..., TN et le type de retour Ret si, pour l-value qu' fn, t1, t2, ..., tN des types Fty2, T1, T2, ..., TN, respectivement, INVOKE(fn, t1, t2, ..., tN) est bien formé et, si Ret n'est pas void, convertible à Ret.
Exemple
// std_tr1__functional__function_target.cpp
// compile with: /EHsc
#include <functional>
#include <iostream>
int neg(int val)
{
return (-val);
}
int main()
{
typedef int (*Myfun)(int);
std::function<int (int)> fn0(neg);
std::cout << std::boolalpha << "empty == " << !fn0 << std::endl;
std::cout << "no target == " << (fn0.target<Myfun>() == 0) << std::endl;
Myfun *fptr = fn0.target<Myfun>();
std::cout << "val == " << (*fptr)(3) << std::endl;
std::function<int (int)> fn1;
std::cout << std::boolalpha << "empty == " << !fn1 << std::endl;
std::cout << "no target == " << (fn1.target<Myfun>() == 0) << std::endl;
return (0);
}
Configuration requise
en-tête : <functional>
l'espace de noms : DST