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