Plantilla std::is_member_object_pointer en C++ con ejemplos

La plantilla std::is_member_object_pointer de C++ STL está presente en el archivo de encabezado <type_traits> . La plantilla std::is_member_object_pointer de C++ STL se usa para verificar si la T es un puntero a un objeto miembro de datos no estáticos o no. Devuelve el valor booleano verdadero si T es un puntero a un tipo de objeto miembro de datos no estáticos; de lo contrario, devuelve falso.

Archivo de cabecera:

#include<type_traits>

Clase de plantilla:

template< class T >
struct is_member_object_pointer

Sintaxis:

std::is_member_function_pointer<T>::value

Parámetro: la plantilla std::is_member_object_pointer acepta un solo parámetro T (clase de rasgo) para verificar si T es un puntero a un tipo de objeto miembro de datos no estáticos 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 objeto miembro de datos no estáticos.
  • Falso: si el tipo T no es un puntero a un tipo de objeto miembro de datos no estáticos.

A continuación se muestra el programa para demostrar std::is_member_object_pointer: en C++:

Programa:

// C++ program to illustrate
// std::is_member_object_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 object
    // pointer or not
    cout << "GFG*: "
         << is_member_object_pointer<GFG*>::value
         << endl;
  
    // Check if int GFG::* is a member
    // object pointer or not
    cout << "int GFG::*  "
         << is_member_object_pointer<int GFG::*>::value
         << endl;
  
    // Check if int A::* is a member
    // object pointer or not
    cout << "int A::*  "
         << is_member_object_pointer<int A::*>::value
         << endl;
  
    // Check if int A::*() is a member
    // object pointer or not
    cout << "int A::*()  "
         << is_member_object_pointer<int (A::*)()>::value
         << endl;
  
    return 0;
}
Producción:

GFG*: false
int GFG::*  true
int A::*  true
int A::*()  false

Referencia: http://www.cplusplus.com/reference/type_traits/is_member_object_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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *