C++中的std::is_member_pointer及示例
C++ STL中的 std::is_member_pointer 模板存在于 < type_traits>头文件中。C++ STL中的 std::is_member_pointer 模板用于检查T是否是指向非静态成员的指针。如果 T 是指向非静态成员类型的指针,则返回布尔值true;否则返回false。
头文件:
#include <type_traits>
模板类:
template<class T>
struct is_member_pointer
: std::integral_constant < bool,
is_member_object_pointer<T>::value
|| is_member_function_pointer<T>::value> {};
语法:
std::is_member_pointer::value
参数: 模板 std::is_member_pointer 接受一个参数 T (Trait class) ,以检查 T 是否为指向非静态成员的指针。
返回值: 此模板将返回一个布尔变量,如下所示:
- True: 如果类型 T 是指向非静态成员的指针。
- False: 如果类型 T 不是指向非静态成员的指针。
以下是演示C/C++中 std::is_member_pointer模板 的程序:
程序:
// C++ program to illustrate
// std::is_member_pointer
#include <bits/stdc++.h>
#include <type_traits>
using namespace std;
// Driver code
int main()
{
// Empty Class GFG
class GFG {
};
// Check if GFG::* is a member
// pointer or not
bool a = is_member_pointer<int(GFG::*)>::value;
if (a) {
cout << "GFG::* is a Member Pointer!" << endl;
}
else {
cout << "GFG::* is not a Member Pointer!" << endl;
}
// Check if int is a member
// pointer or not
a = is_member_pointer<int(int)>::value;
if (a) {
cout << "int is a Member Pointer!" << endl;
}
else {
cout << "int is not a Member Pointer!" << endl;
}
return 0;
}
GFG::* is a Member Pointer!
int is not a Member Pointer!