https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113200
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> --- Why does GCC accept this reduced version, which is invalid for the same reason as the original? #include <string> constexpr int N = 5; struct S { char data_[ N ]; constexpr S( char const* p ) { std::char_traits<char>::move( data_, p, N ); } }; constexpr S s( "test" ); Clang rejects it the same way.