有没有办法使用模板,宏或两者的组合来检查类中的空析构函数以及它继承的类内部? ( is_trivially_destructible 不会产生我需要的东西。)
class Test
{
public:
~Test(){};
};
class Temp2 : public Test
{
};
答案 0 :(得分:0)
构造函数“为空”并不意味着什么,因为任何非pod成员对象都会被编译器/隐式/破坏(即使没有声明析构函数)。
所以,实际上你想要的可能是
std::is_pod<T>::value
注意:MSVC gets it wrong(例如struct X : std::array<int, 4> {}
std::is_trivial<T>::value
这个想法是只有当构造函数不做任何魔术时才能跳过构造函数。建筑和破坏的设计是完美平衡的,所以如果施工方也是如此,你就知道破坏者是微不足道的。