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;
}

Reply via email to