https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109871
--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Patrick Palka <ppa...@gcc.gnu.org>: https://gcc.gnu.org/g:d5e5007c4b534391c0a97be56f6024fde1a88682 commit r14-917-gd5e5007c4b534391c0a97be56f6024fde1a88682 Author: Patrick Palka <ppa...@redhat.com> Date: Tue May 16 12:39:16 2023 -0400 c++: desig init in presence of list ctor [PR109871] add_list_candidates has logic to reject designated initialization of a non-aggregate type, but this is inadvertently being suppressed if the type has a list constructor due to the order of case analysis, which in the below testcase leads to us incorrectly treating the initializer list as if it's non-designated. This patch fixes this by making us check for invalid designated initialization sooner. PR c++/109871 gcc/cp/ChangeLog: * call.cc (add_list_candidates): Check for invalid designated initialization sooner and even for types that have a list constructor. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/desig27.C: New test.