请考虑以下事项:
#include <vector>
struct Foo { int a, b; };
int main(int /*argc*/, char* /*argv*/[]) {
std::vector<struct Foo> foos = { {4,5} };
for (struct Foo const& foo : foos) {}
return 0;
}
Clang,ICC和MSVC都是在没有发生意外的情况下编译的。但是,GCC 6.2输出:
警告:类型可能未在for-range-declaration
中定义
这在6.1中没有发生,并且它已成为7中的实际错误。但是,在我看来,在第2行定义了struct Foo
。这个警告/错误是错误的吗?