function::target
Comprueba si el objeto accesible almacenado es accesible especificadas.
template<class Fty2>
Fty2 *target();
template<class Fty2>
const Fty2 *target() const;
Parámetros
- Fty2
El tipo de objeto accesible de destino a probar.
Comentarios
El tipo Fty2 debe ser accesible para los tipos T1, T2, ..., TN de argumentos y el tipo de valor devuelto Ret.Si target_type() == typeid(Fty2), función de plantilla miembro devuelve la dirección del objeto de destino; de lo contrario, devuelve 0.
Un tipo Fty2 es accesible para los tipos T1, T2, ..., TN de argumentos y el tipo de valor devuelto Ret si, para los son fn, t1, t2, ..., tN de los tipos Fty2, T1, T2, ..., TN, respectivamente, INVOKE(fn, t1, t2, ..., tN) es correcto y, si Ret no es void, convertible a Ret.
Ejemplo
// 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);
}
Requisitos
encabezado: <funcional>
espacio de nombres: std