modernize-use-noexcept¶
此检查将过时的动态异常规范替换为适当的 noexcept 规范(在 C++11 中引入)。默认情况下,此检查将 throw()
替换为 noexcept
,将 throw(<exception>[,...])
或 throw(...)
替换为 noexcept(false)
。
示例¶
void foo() throw();
void bar() throw(int) {}
转换为
void foo() noexcept;
void bar() noexcept(false) {}
选项¶
- ReplacementString¶
用户可以使用
ReplacementString
指定一个宏来代替noexcept
。这在维护使用除noexcept
之外的自定义异常规范标记的源代码时很有用。修复提示仅针对非抛出规范生成。
示例¶
void bar() throw(int);
void foo() throw();
转换为
void bar() throw(int); // No fix-it generated.
void foo() NOEXCEPT;
如果 ReplacementString
选项设置为 NOEXCEPT。
- UseNoexceptFalse¶
默认情况下已启用,禁用将生成修复提示,这些提示将完全删除抛出动态异常规范(例如,throw(<something>)
),而不会提供替换文本,除非默认情况下为 noexcept(true)
的析构函数和删除运算符。
示例¶
void foo() throw(int) {}
struct bar {
void foobar() throw(int);
void operator delete(void *ptr) throw(int);
void operator delete[](void *ptr) throw(int);
~bar() throw(int);
}
转换为
void foo() {}
struct bar {
void foobar();
void operator delete(void *ptr) noexcept(false);
void operator delete[](void *ptr) noexcept(false);
~bar() noexcept(false);
}
如果 UseNoexceptFalse
选项设置为 false。