function::target
Prüft, ob aufrufbares gespeichertes Objekt aufgerufen werden kann, wie angegeben.
template<class Fty2>
Fty2 *target();
template<class Fty2>
const Fty2 *target() const;
Parameter
- Fty2
Der aufrufbare zu testen Objekttyp des Ziels.
Hinweise
Der Typ Fty2 muss für die Argumenttypen T1, T2, ..., TN und Rückgabetyp Ret aufgerufen werden können.Wenn target_type() == typeid(Fty2), die Membervorlagenfunktion die Adresse des Zielobjekts zurückgibt, Andernfalls wird 0 zurückgegeben.
Ein Typ Fty2 ist für die Argumenttypen T1, T2, ..., TN und Rückgabetyp Ret aufgerufen werden, wenn, für lvalues fn, t1, t2, ..., tN von Typen Fty2, T1, T2, ..., TN bzw. INVOKE(fn, t1, t2, ..., tN) wohl geformt und, wenn Ret nicht void ist, zu Ret konvertiert werden kann.
Beispiel
// 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);
}
Anforderungen
Header: <functional>
Namespace: std