http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53158
Bug #: 53158 Summary: [C++11] Bogus error in loop condition Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: zeratul...@hotmail.com For the following code: int main() { auto a = []() { return true; }; auto b = []() { return a(); }; int c, d; while (b() && c < d) { } } GCC produces the following errors: test.cpp: In lambda function: test.cpp:4:28: error: 'a' is not captured auto b = []() { return a(); }; ^ test.cpp: In function 'int main()': test.cpp:6:23: error: invalid operands of types 'void' and 'int' to binary 'operator!=' while (b() && c < d) ^ The first error is correct, and fixing it makes both errors go away. However, the second error is bogus: operator!= is not being called anywhere.