https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110714
Patrick Palka <ppalka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org, | |ppalka at gcc dot gnu.org --- Comment #6 from Patrick Palka <ppalka at gcc dot gnu.org> --- For the original testcase, evaluation of pf->get_this(); yields &heap [0] instead of the expected &heap, which we don't recognize as a valid constexpr heap pointer thus leading to the error. This heap[0] term gets built from cxx_fold_indirect_ref which folds '*(struct Derived *) &heap' into 'heap[0]' (where 'heap' has type Derived[1]), which doesn't seem like a sound transformation? I'd expect it to get folded to simply 'heap'. Then again this intermediate (Derived *) cast seems unsound in the first place since we're casting something of type Derived[1]* to Derived*. I don't know what to make of that.