c++ - 查找所有 move 构造函数和 move 赋值运算符(特别是那些没有 'noexcept' 的)

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

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

有没有办法找到所有 move 构造函数和 move 赋值运算符?或者,如果 move 构造函数/赋值运算符未标记为“noexcept”,是否会打开编译器警告?

最佳答案

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

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

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

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

关于c++ - 查找所有 move 构造函数和 move 赋值运算符(特别是那些没有 'noexcept' 的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49403733/

相关文章:

c++ - fatal error C1001 : An internal error (compiler file 'msc1.cpp' , 第 1518 行)与 vs2017 15.8.4

c++ - C++11 中的高效算术运算符重载

c++ - 我们可以在声明中的任何位置放置 "typedef"说明符吗?

c++ - typeid 中的通配符

c++ - 将 IDispatch* 转换为字符串?

c++ - 默认情况下是否创建 move 构造函数?

C++ std::move 指针

c++ - Boost 原子 128 位原子类型 x86_64

visual-studio - 如何在 Visual Studio 2017 版本 15.3 中使用 F#?

c# - Visual Studio 扩展 : How to get the line on which Context Menu was called?