https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108269
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2023-01-03 Ever confirmed|0 |1 Summary|Incorrect |__PRETTY_FUNCTION__ for |__PRETTY_FUNCTION__ with |NTTP literal intiailization |std::array<char> in C++20 |containing a char array is |NTTP literal |assumed to ending in a null | |character --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- type_string<str<"hello\0\1">> Works though: static constexpr std::string_view {anonymous}::type_string_t<T>::generate() [with T = {anonymous}::str<{anonymous}::str_storage<8>{std::array<char, 8>{"hello\000\001"}}>; std::string_view = std::basic_string_view<char>] .... Oh the problem is just char ending not in a null character. Reduced testcase: template<auto b> struct type_string_t { constexpr static auto generate() noexcept { return __PRETTY_FUNCTION__; } }; template<int N> struct t { char a[N]; }; int main() { __builtin_printf("%s\n", type_string_t<t{{'a', 'b'}}>::generate()); return 0; }