我的程序有一个迭代算法和一个我写的for循环
for ( auto i: std::views::iota( 0u, max_iter ) ) { ... }
我真的很喜欢它可以这样写,即使必要的头文件很大。i
当我编译它时,虽然我收到一个未使用变量的警告。
当我以老式方式编写 for 循环时
for ( unsigned i=0; i < max_iter; i++ ) { ... }
那么就没有警告了。
我用一个最小的程序测试了这个for-loop.cpp
:
#include<ranges>
#include<numeric>
#include<iostream>
int main() {
char str[13] = "this is good";
for (auto i : std::views::iota(0u, 2u)) {
std::cout << str << "\n";
}
for (unsigned it=0; it<2; it++ ) {
std::cout << str << "\n";
}
return 0;
}
果然,编译它g++ -Wall --std=c++20 -o for-loop for-loop.cpp
会为第一个循环而不是第二个循环发出警告。
我在这里错过了什么吗?我更喜欢第一种表示法——而且我知道我可以停止警告-Wno-unused-variables
;我想要那些警告,只是我真的在使用 for-loop 计数器。