Một đồng nghiệp vô tình đã viết code như thế này:Tại sao mã "foo :: foo :: foo :: foob" biên dịch?
struct foo {
foo() : baz(foobar) {}
enum bar {foobar, fbar, foob};
bar baz;
};
void f() {
for(auto x : { foo::foobar,
foo::fbar,
foo::
foo::
foo::foob });
// ...
}
GCC 5.1.0 biên dịch này.
Quy tắc thực hiện việc biên dịch này là gì?
bạn có thể là một chút cụ thể hơn về những gì phần bạn không mong đợi để biên dịch sạch? – neuhaus
Nó không: https://godbolt.org/g/j2AbVn – Timbo
Có một tệp bao gồm bị thiếu và vòng lặp for thiếu một câu lệnh nhưng ngoài việc nó biên dịch – Johan