[Bug c++/53158] New: [C++11] Bogus error in loop condition

zeratul976 at hotmail dot com gcc-bugzilla@gcc.gnu.org
Sun Apr 29 04:42:00 GMT 2012


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: unassigned@gcc.gnu.org
        ReportedBy: zeratul976@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.



More information about the Gcc-bugs mailing list