function::target
Test se l'oggetto chiamabile archiviato può essere chiamato come specificato.
template<class Fty2>
Fty2 *target();
template<class Fty2>
const Fty2 *target() const;
Parametri
- Fty2
Il tipo di oggetto chiamabile di destinazione da testare.
Note
Il tipo Fty2 è necessario essere chiamato per i tipi di argomento T1, T2, ..., TN e il tipo restituito Ret.Se target_type() == typeid(Fty2), la funzione del modello del membro restituisce l'indirizzo dell'oggetto di destinazione; in caso contrario, restituisce 0.
Un tipo Fty2 può essere chiamato per i tipi di argomento T1, T2, ..., TN e il tipo restituito Ret se, per i lvalue fn, t1, t2, ..., tN dei tipi Fty2, T1, T2, ..., TN, rispettivamente, INVOKE(fn, t1, t2, ..., tN) è corretto e, se Ret non è void, convertibile in Ret.
Esempio
// 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);
}
Requisiti
intestazione: <functional>
Spazio dei nomi: deviazione standard