La plantilla std::is_member_function_pointer de C++ STL está presente en el archivo de encabezado <type_traits> . La plantilla std::is_member_function_pointer de C++ STL se usa para verificar si la T es un puntero a una función miembro no estática o no. Devuelve el valor booleano verdadero si T es un puntero a una función miembro no estática; de lo contrario, devuelve falso.
Archivo de cabecera:
#include<type_traits>
Clase de plantilla:
template <class T> struct is_member_function_pointer;
Sintaxis:
std::is_member_function_pointer::value
Parámetro: la plantilla std::is_member_function_pointer acepta un solo parámetro T (clase de rasgo) para verificar si T es un puntero a una función miembro no estática o no.
Valor de retorno: esta plantilla std::is_member_object_pointer devuelve una variable booleana como se muestra a continuación:
- Verdadero: si el tipo T es un puntero a un tipo de función miembro no estática.
- Falso: si el tipo T no es un puntero a un tipo de función miembro no estática.
A continuación se muestra el programa para demostrar std::is_member_function_pointer en C++ :
Programa 1:
// C++ program to illustrate // std::is_member_function_pointer #include <bits/stdc++.h> #include <type_traits> using namespace std; // Declare a structure class GFG { public: int gfg; }; class A { }; // Driver Code int main() { // Object to class GFG int GFG::*pt = &GFG::gfg; cout << boolalpha; // Check if GFG* is a member function // pointer or not cout << "GFG*: " << is_member_function_pointer<GFG*>::value << endl; // Check if int GFG::* is a member // function pointer or not cout << "int GFG::* " << is_member_function_pointer<int GFG::*>::value << endl; // Check if int A::* is a member // function pointer or not cout << "int A::* " << is_member_function_pointer<int A::*>::value << endl; // Check if int A::*() is a member // function pointer or not cout << "int A::*() " << is_member_function_pointer<int (A::*)()>::value << endl; return 0; }
GFG*: false int GFG::* false int A::* false int A::*() true
Programa 2:
// C++ program to illustrate // std::is_member_function_pointer #include <bits/stdc++.h> #include <type_traits> using namespace std; // Declare a structure struct A { void fn(){}; }; struct B { int x; }; // Driver Code int main() { void (A::*pt)() = &A::fn; cout << boolalpha; cout << "A*: " << is_member_function_pointer<A*>::value << endl; cout << "void(A::*)(): " << is_member_function_pointer<void (A::*)()>::value << endl; cout << "B*: " << is_member_function_pointer<B*>::value << endl; cout << "void(B::*)(): " << is_member_function_pointer<void (B::*)()>::value << endl; return 0; }
A*: false void(A::*)(): true B*: false void(B::*)(): true
Referencia: http://www.cplusplus.com/reference/type_traits/is_member_function_pointer/
Publicación traducida automáticamente
Artículo escrito por bansal_rtk_ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA