假设我有
struct X {
~X() {}
};
我在C ++ 03中获取X::~X()
的成员函数指针的类型和方式是什么?
我不想实际调用它,只是在SFINAE中使用来确定是否存在给定类型的析构函数。
答案 0 :(得分:5)
您无法获取析构函数的函数指针或构造函数。尽管如此,类型仍然存在析构函数,并且您无法检测 SFINAE 是否不将private
作为访问说明符考虑。
关于调用标量类型的析构函数的主题,标准说 [class.dtor] / 16 :
[注意:显式调用析构函数的表示法可用于任何标量类型名称(5.2.4)。允许这样就可以编写代码而无需知道给定类型是否存在析构函数。例如,
typedef int I;
我* p;
P-I标记::〜I();
-end note]