gpt4 book ai didi

c++ - 检查空析构函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:54:46 27 4
gpt4 key购买 nike

有没有一种方法可以使用模板、宏或两者的组合来检查类内部及其继承的类内部是否存在空析构函数? (is_trivially_destructible 不能产生我需要的东西)。

class Test
{
public:
~Test(){};
};

class Temp2 : public Test
{
};

最佳答案

“为空”的构造函数没有任何意义,因为任何非 pod 成员对象都将/隐式地/被编译器销毁(即使没有声明析构函数)。

所以,其实你想要的很有可能

  • std::is_pod<T>::value

    当心:MSVC gets it wrong (例如 struct X : std::array<int, 4> {} pod)

  • std::is_trivial<T>::value

这个想法是,只有当构造函数也没有做任何神奇的事情时,才可以跳过构造函数。构造和破坏被设计成完美的平衡,所以你知道如果构造方太微不足道,那么析构函数也是微不足道的。

关于c++ - 检查空析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582519/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com