为什么布尔没有析构函数?

Why bool doesn't have destructor?

本文关键字:析构函数 布尔没 为什么      更新时间:2023-10-16

AFAIK,出于一致性原因,C++为基元类型提供了析构函数。但这不适用于bool类型。

bool*   vptr;
vptr->~bool();  // Error. "Expected a class name after '~' to name a destructor"
int8_t* vptr;
vptr->~int8_t(); // No error.

我的代码有什么问题?这是我的编译器版本。

Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix

因为bool像所有其他内置类型一样,不是类型,尽管它适用于typedefs和模板参数,因为标准允许它启用泛型编程。

template<typename T>
void destruct(T const & obj)
{
     obj.~T();
}

您也可以为内置类型调用此函数! :-)