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.

Reply via email to