https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103924
Giuseppe D'Angelo <dangelog at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dangelog at gmail dot com --- Comment #5 from Giuseppe D'Angelo <dangelog at gmail dot com> --- Here's an even simpler testcase, rejected by GCC but accepted by Clang (with libstdc++): https://gcc.godbolt.org/z/63Wss3Ej8 #include <string> constexpr void f(std::initializer_list<std::string>) {} constexpr bool test() { f({"x"}); return true; } static_assert(test()); I've been trying to minimize the testcase by removing clutter from basic_string: https://gcc.godbolt.org/z/haxvvr1YK The fun part is that if one deletes the copy constructor (which is actually never called) the code is accepted by GCC. That's what makes me think this is a compiler bug.