如何为析构函数指定nothrow异常说明符
How to specify nothrow exception specifier for destructor?
每当Foo
的析构函数不抛出时,我试图指定函数为nothrow
。我可以通过使用类型特征std::is_nothrow_destructible<>
来做到这一点。我怎样才能直接做到这一点?我已经尝试了以下操作,但如果我取消注释注释行,它就不会编译
#include <iostream>
#include <type_traits>
class Foo
{
public:
~Foo() noexcept {}
};
// void f() noexcept(noexcept(~Foo{})) { } // error here
void g() noexcept(std::is_nothrow_destructible<Foo>::value)
{
}
int main()
{
g();
}
我收到一个错误
error: no match for 'operator~' (operand type is 'Foo')
错误说明符noexcept(noexcept(~Foo()))
不正常,尽管对于构造函数我可以使用noexcept(noexcept(Foo()))
。我是不是遗漏了一些明显的语法?
void f() noexcept(noexcept(std::declval<Foo>().~Foo()))
相关文章:
- 处理多个异常集合的C++方法
- 我在c++代码中生成了一个运行时#3异常
- 孤立代码块在结构中引发异常
- C++中的赋值发生,尽管右侧出现异常
- 从构造函数抛出异常时如何克服内存泄漏
- 异常属于C++中的线程还是进程
- 当类定义不可见时捕获异常
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 为什么异常不退出程序?
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 如何修复链表类实现的未处理异常0xDDDDDDDD
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- 是什么导致了Unity 3D中的"错误线程异常"?
- 如何将strftime中的格式错误作为异常捕获
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 尝试使用智能指针时引发异常
- new(std::nothrow) int[n] 抛出异常
- 如何为析构函数指定nothrow异常说明符
- 带nothrow选项的Operator new仍然会抛出异常
- 异常安全:nothrow 交换的好处