找到所有移动构造函数并移动赋值运算符(特别是没有' noexcept'的那些)

时间:2018-03-21 10:22:32

标签: c++ visual-studio-2017 move-semantics c++-standard-library noexcept

在Visual Studio 2017中,我尝试添加“noexcept'到所有相关的移动构造函数和移动赋值运算符,以便标准库容器可以调用它们。

有没有办法找到所有移动构造函数并移动赋值运算符?或者,如果移动构造函数/赋值运算符未标记为' noexcept'?

,是否会打开编译器警告

1 个答案:

答案 0 :(得分:2)

只需在您的代码库中查找它们:

grep -E '\(.*&&.*\)' | grep -v noexcept

您可能需要改进此正则表达式,以便更好地过滤匹配项。你可以:

  • 利用移动构造函数作为所有构造函数,没有返回类型(^\w*\W*\();
  • 利用移动构造函数只接受一个参数(将.*替换为[^,]*);
  • 仅过滤寻找最终分号的声明或定义。