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