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

            Bug ID: 99031
           Summary: Comparing pointers to heap-allocated memory is not a
                    constant expression
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: david at doublewise dot net
  Target Milestone: ---

The following valid translation unit

```
constexpr bool f() {
        auto a = new int;
        auto b = new int;
        if (a == b) {
        }
        delete b;
        delete a;
        return true;
}

static_assert(f());
```

is rejected with

```
<source>:11:16: error: non-constant condition for static assertion
   11 | static_assert(f());
      |               ~^~
<source>:11:16:   in 'constexpr' expansion of 'f()'
<source>:4:15: error: '(((int*)(& heap )) == ((int*)(& heap )))' is not a
constant expression
    4 |         if (a == b) {
      |             ~~^~~~
Compiler returned: 1
```

See it live: https://godbolt.org/z/of45no

Reply via email to