Partager via


function::target

Teste si l'objet appelable stocké est appelable comme spécifié.

template<class Fty2>
    Fty2 *target();
template<class Fty2>
    const Fty2 *target() const;

Paramètres

  • Fty2
    Le type d'objet cible appelable à tester.

Notes

Le type Fty2 doit être appelable pour les types d'argument T1, T2, ..., TN et le type de retour Ret. Si target_type() == typeid(Fty2), la fonction membre du modèle retourne l'adresse de l'objet cible ; sinon, elle retourne 0.

Un type Fty2 est appelable pour les types d'argument T1, T2, ..., TN et le type de retour Ret si, pour les lvalues fn, t1, t2, ..., tN les types Fty2, T1, T2, ..., TN, respectivement, INVOKE(fn, t1, t2, ..., tN) présente une forme correcte et, si Ret n'est pas void, convertissable en 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>

Espace de noms : std

Voir aussi

Référence

function, classe

function::target_type