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

--- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> ---
We also reject a constexpr version of the testcase:

$ cat testcase.C
struct A { A *p = this-1; int n = p->n; };

constexpr A
foo()
{
  return {};
}

constexpr A a[2] = { {nullptr, 5}, foo() };
static_assert(a[1].n == 5);

$ g++ testcase.C
testcase.C:9:40:   in ‘constexpr’ expansion of ‘foo()’
testcase.C:9:42: error: ‘*(&*this)->A::p’ is not a constant expression
    9 | constexpr A a[2] = { {nullptr, 5}, foo() };
      |                                          ^
testcase.C:10:22: error: non-constant condition for static assertion
   10 | static_assert(a[1].n == 5);
      |               ~~~~~~~^~~~

Reply via email to