https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105622
--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jason Merrill <ja...@gcc.gnu.org>: https://gcc.gnu.org/g:2540e2c604142889308857657d3510874955336a commit r13-746-g2540e2c604142889308857657d3510874955336a Author: Jason Merrill <ja...@redhat.com> Date: Fri May 20 16:16:25 2022 -0400 c++: constexpr empty base redux [PR105622] Here calling the constructor for s.__size_ had ctx->ctor for s itself because cxx_eval_store_expression doesn't create a ctor for the empty field. Then cxx_eval_call_expression returned the s initializer, and my empty base overhaul in r13-160 got confused because the type of init is not an empty class. But that's OK, we should be checking the type of the original LHS instead. We also want to use initialized_type in the condition, in case init is an AGGR_INIT_EXPR. I spent quite a while working on more complex solutions before coming back to this simple one. PR c++/105622 gcc/cp/ChangeLog: * constexpr.cc (cxx_eval_store_expression): Adjust assert. Use initialized_type. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/no_unique_address14.C: New test.