function::target
Testy, jeśli przechowywane nieopłacona obiektu jest wpłacone, jak określono.
template<class Fty2>
Fty2 *target();
template<class Fty2>
const Fty2 *target() const;
Parametry
- Fty2
Typ nieopłacona obiektu docelowego do testowania.
Uwagi
Typ Fty2 musi być wpłacone na typy argumentów T1, T2, ..., TN i zwracany typ Ret.Jeśli target_type() == typeid(Fty2), element członkowski szablon funkcja zwraca adres obiektu docelowego; w przeciwnym razie zwraca wartość 0.
Typ Fty2 jest wykupione dla typy argumentów T1, T2, ..., TN oraz zwrócony typ Ret Jeśli, dla l-wartości fn, t1, t2, ..., tN typów Fty2, T1, T2, ..., TN, odpowiednio, INVOKE(fn, t1, t2, ..., tN) jest dobrze sformułowany i, jeżeli Ret nie jest void, konwertowany na Ret.
Przykład
// 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);
}
Wymagania
Nagłówek: <functional>
Przestrzeń nazw: std