Partager via


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

Voir aussi

Référence

function Class

function::target_type