https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105606
Bug ID: 105606 Summary: [12 Regression] std::pair with nested struct and NSDMI Product: gcc Version: 12.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mrjoel at lixil dot net Target Milestone: --- The following snippets fail to compile with GCC 12.1.0. The first relates more to actual code usage while the second I believe to be a more minimal reproducer. This looks closely related to the examples and discussion in bug 96645 and yet this case compiles in versions through 11, only failing to compile in 12. It may also be closely related to (or have it as an underlying cause) bug 102199. Snippet 1 ========= #include <map> #include <utility> struct Outer { struct Inner { int a{0}; }; std::pair<Inner, int> p; void f() { std::map<int, std::pair<Inner, int>> m; m[0] = p; } }; Snippet 2 ========= #include <utility> struct Outer { struct Inner { int a{0}; // removing initialization compiles }; std::pair<Inner, int> p; // commenting out compiles void f() { [[maybe_unused]] std::pair<Inner, int> localp; } };