lap*_*apk 28 c++ destructor noexcept c++11
我对析构函数有点困惑noexcept.我的理解是,在C++ 11中,任何析构函数(包括用户定义的)都是隐含的noexcept(true),即使我们throw来自它.并且必须明确指定noexcept(false)他们是否因某种原因希望它是那样的.
我所看到的恰恰相反 - 与GCC 4.7.2一样,用户定义的析构函数,无论类和析构函数多么原始,都是隐含的noexcept(false).我在这里错过了什么?是否有一些隐藏的问题与用户定义的析构函数?
And*_*owl 18
这是一个已知的错误(OP用于查找错误报告),它似乎已在GCC 4.8.0中得到修复.例如,下面的静态断言将触发GCC 4.7.2,但不会触发GCC 4.8.0:
struct X
{
~X() { };
};
int main()
{
X x;
// This will not fire even in GCC 4.7.2 if the destructor is
// explicitly marked as noexcept(true)
static_assert(noexcept(x.~X()), "Ouch!");
}
Run Code Online (Sandbox Code Playgroud)