https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105925
Bug ID: 105925 Summary: [11.1 Regression] Could not convert '{{0, 0.0}}' from '<brace-enclosed initializer list>' to 'X' Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jehova at existiert dot net Target Milestone: --- struct V { int i; double d; }; struct X { union { int x; V y; }; }; X foo() { return {.y = {0, 0.0}}; } Compilation with 'g++ -std=c++20' works in 11.1 but fails for 11.2 and newer, particularly in 12.1. See https://godbolt.org/z/foq9aEs57 The code is also accepted by other major compilers (clang and MSVC).