https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105441
--- Comment #2 from 康桓瑋 <hewillk at gmail dot com> --- floating_from_chars.cc#L667 // Parse the written exponent. int written_exponent = 0; if (first != last && *first == 'p') { // Tentatively consume the 'p' and try to parse a decimal number. const char* const fallback_first = first; it seems like it should be if (first != last && std::tolower((unsigned char)*first) == 'p')