提问人:Leon 提问时间:11/7/2023 最后编辑:Leon 更新时间:11/7/2023 访问量:29
gcc-12 中的 [-Wrange-loop-construct] 过于严格?
Overly strict [-Wrange-loop-construct] in gcc-12?
问:
我刚刚从 gcc-10.5.0 升级到 GCC/G++-12.2(带有 Debian12 官方 apt 存储库), 并重新编译了我的旧代码。
g++-12 给了我很多这样的警告:
my_source.cpp:60:25:警告:循环变量“aaa”创建副本 类型 'bbb' [-Wrange-loop-construct]
源代码如下所示:
std::set<int16_t> bbb;
for( const auto aaa : bbb )
do_something( aaa );
我知道我可以消除它,如果我将代码更改为这样:
std::set<int16_t> bbb;
for( const auto& aaa : bbb )
do_something( aaa );
但这会使我的代码有点奇怪。 事实上,变量 aaa 的大小非常小(2 个字节),我以前从未收到过 g++-9 和 g++-10 的警告。
我知道它的意思,但我觉得它有点过于严格了,不是吗?
我发现这篇旧帖子讨论了类似的问题,有人说如果大小小于 64 位,则不应出现此警告。
这是 gcc-12 的错误吗?还是我犯了什么错误?
答: 暂无答案
评论