在 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/