5

假设我有

struct X {
  ~X() {}
};

X::~X()C++03 中的成员函数指针是什么类型以及如何获取?

我不想实际调用它,只需在 SFINAE 中使用来确定给定类型是否存在析构函数。

4

1 回答 1

6

您无法获取析构函数或构造函数的函数指针。尽管如此,一个类型总是存在析构函数,并且您无法检测到它的privatewith as 访问说明符是否不被SFINAE考虑。

关于调用标量类型的析构函数的主题,标准说[class.dtor]/16

[注意:显式调用析构函数的符号可用于任何标量类型名称(5.2.4)。允许这样做可以编写代码,而不必知道给定类型是否存在析构函数。例如,

typedef int I;

我* p;

p->I::~I();

——尾注]

于 2012-06-02T00:58:16.310 回答