【发布时间】:2023-03-14 01:50:02
【问题描述】:
我使用的是英特尔 c++ 编译器 icc 版本 18.0.3。
如果我用-w3 编译following code
#include <vector>
int main() {
std::vector<int> vec;
vec.push_back(2);
return 0;
}
test_w3.cpp(6): 备注 #383: 复制到临时的值,参考 临时使用 vec.push_back(2);
Replacing2 带有一个 const 变量作为
#include <vector>
int main() {
std::vector<int> vec;
const int a = 2;
vec.push_back(a);
return 0;
}
不给出警告。
这个警告是什么意思?可以安全地忽略它吗(尽管需要无警告代码)?
【问题讨论】:
-
如果vector在main函数之外声明或者打印结果,是否给出相同的注释?
-
如果我打印它,仍然会给出注释。 gcc.godbolt.org/z/atlYe6
-
根据这篇文章intel-c-compiler/topic/300453。这句话并不重要,从它的声音来看,应该删除它,它可能是一个错误。
-
如果我转到一个函数,仍然会给出注释。 gcc.godbolt.org/z/fKoED3
-
这看起来真的像一个错误的警告。如果将
-w3替换为-Wall,即使 icc 也不会抱怨相同的代码
标签: c++ vector compiler-warnings