https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107070

            Bug ID: 107070
           Summary: GCC thinks !!b is an lvalue (bool b;)
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nir.livne at gmail dot com
  Target Milestone: ---

#include <iostream>

// gcc   result: 0 1 
// clang result: 1 1
// msvc  result: 1 1

int main() {
    bool b = true;

    // #1 GCC result with 0 while it should be 1
    std::cout << std::is_same<decltype(!(!b)), bool>::value << "\n";

    auto bb = (!(!b));
    std::cout << std::is_same<decltype(bb), bool>::value << "\n";

    // #2 this should not compile
    // !!b = true;
}

Reply via email to