https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86852
--- Comment #3 from Michael Veksler <mickey.veksler at gmail dot com> --- I agree that this is a ridiculous example. That's why there should be an official DR to it. It is a bad idea to have each compiler, do a different thing -- that's why there is a C++ standard. clang are sticking to the standard, so code that compiles under clang does not compile under gcc and vice versa. As you mention, there is https://cplusplus.github.io/LWG/issue3025 , but even if this proposal is accepted things are still too brittle in libstd++: std::unordered_map m{{1,2}, {3,4}} does not work, and forcing std::unordered_map m{std::pair{1,2}, {3,4}} is counterintuitive. Worse: std::unordered_map<int,int> m( std::initializer_list<std::pair<int, int>>{ {1, 2}, {2, 3}}); does not work, which means that: std::unordered_map m( std::initializer_list<std::pair<int, int>>{ {1, 2}, {2, 3}}); does not work either. It took me some time to find the right combination that makes this work, which you mentioned above. I have seen other struggle with this, so it is not just me. The current way GCC does is not very intuitive.