C++模板std::is_member_function_pointer及示例

C++模板std::is_member_function_pointer及示例

C++ STL中的 std::is_member_function_pointer 模板存在于头文件中。 C++ STL的 std::is_member_function_pointer 模板用于检查 T 是否为非静态成员函数的指针。 如果 T 是非静态成员函数的指针,则返回布尔值true,否则返回false。

所属头文件:

#include <type_traits>

模板类:

template <class T>
struct is_member_function_pointer;

语法:

std::is_member_function_pointer::value

参数: 模板 std::is_member_function_pointer 接受一个参数 T(特征类) ,以检查 T 是否为非静态成员函数的指针。

返回值: 此模板 std::is_member_function_pointer 返回一个布尔变量,如下所示:

  • True: 如果类型 T 是指向非静态成员函数类型的指针。
  • False: 如果类型 T 不是指向非静态成员函数类型的指针。

以下是在C++中演示 std::is_member_function_pointer 的程序:

程序1:

// C ++程序说明
// std::is_member_function_pointer
#include <bits/stdc++.h>
#include <type_traits>
using namespace std;

//声明一个结构体
class GFG {

public:
    int gfg;
};

class A {
};

//主要代码
int main()
{

//对象分类GFG
    int GFG :: * pt = & GFG :: gfg;
    cout << boolalpha;

//检查GFG *是否为成员函数指针
    cout <<“GFG *:”
        << is_member_function_pointer< GFG * & gt; :: value
        << endl;

//检查int GFG :: *是否为成员函数指针
    cout <<“int GFG :: *”
        << is_member_function_pointer< int GFG :: * & gt; :: value
        << endl;

//检查int A :: *是否为成员函数指针
    cout <<“int A :: *”
        << is_member_function_pointer< int A :: * & gt; :: value
        << endl;

//检查int A :: *()是否为成员函数指针
    cout <<“int A :: *()”
        << is_member_function_pointer< int(A :: *)()& gt; :: value
        << endl;

    return 0;
}
GFG *:false
int GFG :: * false
int A :: * false
int A :: *()true

程序2:

// C++程序来说明
// std::is_member_function_pointer
#include <bits/stdc++.h>
#include <type_traits>
using namespace std;
 
// 声明一个结构
struct A {
   void fn(){};
};
 
struct B {
   int x;
};
 
// 主函数
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

引用: http://www.cplusplus.com/reference/type_traits/is_member_function_pointer/

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程