La plantilla is_pointer de la biblioteca Boost se usa para verificar si el tipo dado es un puntero o no. Devuelve un valor booleano que muestra lo mismo.
Archivos de encabezado:
#include "boost/type_traits.hpp" or #include "boost/type_traits/is_pointer.hpp"
Clase de plantilla:
template <class T> struct is_pointer : public true_type-or-false_type {};
Si T es un tipo de puntero, hereda de tipo_verdadero; de lo contrario, hereda de tipo_falso.
Sintaxis:
boost::is_pointer::value boost::is_pointer::value_type
Parámetro: esta plantilla acepta un solo parámetro T (clase de rasgo) para verificar si T es un tipo de puntero o no.
Argumentos aceptados: esta plantilla acepta los siguientes argumentos:
typename T T *volatile T *const volatile T *const T *
Valor devuelto: esta plantilla devuelve un valor booleano como se muestra a continuación:
- Verdadero: si el tipo es un valor de puntero.
- Falso: si el tipo no es un valor de puntero.
Los siguientes programas ilustran la plantilla std::is_pointer en C++ STL:
Programa 1:
// C++ program to illustrate // std::is_floating_point template #include <bits/stdc++.h> #include <boost/type_traits/is_pointer.hpp> #include <boost/typeof/typeof.hpp> using namespace std; // Main Program int main() { cout << "is_pointer_type: \n"; cout << "int *: " << boost::is_pointer<int*>::value << "\n"; cout << "char *: " << boost::is_pointer<char*>::value << "\n"; // Pointer to integer int* a; cout << "pointer to integer: " << boost::is_pointer<decltype(a)>::value << "\n"; // Pointer to 1D array int* b = new int[29]; cout << "pointer to 1-D array: " << boost::is_pointer<decltype(b)>::value << "\n"; // 1-D array int c[20]; cout << "1-D array :" << boost::is_pointer<decltype(c)>::value << "\n"; return 0; }
is_pointer_type: int *: 1 char *: 1 pointer to integer: 1 pointer to 1-D array: 1 1-D array :0
Programa 2:
// C++ program to illustrate // std::is_floating_point template #include <bits/stdc++.h> #include <boost/type_traits/is_pointer.hpp> #include <boost/typeof/typeof.hpp> using namespace std; // Function with an integer // argument and void return type void fun(int x) { cout << "value of x is : " << x << "\n"; } // A Structure struct A { int x; char a[8]; }; // A Class class student { int roll; string name; public: // Student Class Constructor student(int x, string y) { roll = x; name = y; } // Member function to get the // name of a student string get_name() { return name; } // Member function to get the // roll number of a student int get_roll() { return roll; } }; // Main Program int main() { cout << "is_pointer_type: \n"; // Pointer to function void (*ptr)(int) = &fun; cout << "pointer to fun: " << boost::is_pointer<decltype(ptr)>::value << "\n"; // Instance of A A obj; cout << "instance of a structure: " << boost::is_pointer<decltype(obj)>::value << "\n"; // Pointer to instance of A A* obj2; cout << "pointer to instance of a structure: " << boost::is_pointer<decltype(obj2)>::value << "\n"; // Instance of student student s(11840220, "GeeksforGeeks"); cout << "instance of a class: " << boost::is_pointer<decltype(s)>::value << "\n"; // Pointer to instance of student student* S; S = &s; cout << "pointer to instance of a class: " << boost::is_pointer<decltype(S)>::value << "\n"; return 0; }
is_pointer_type: pointer to fun: 1 instance of a structure: 0 pointer to instance of a structure: 1 instance of a class: 0 pointer to instance of a class: 1
Publicación traducida automáticamente
Artículo escrito por dahalegopal27 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA