https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114862

            Bug ID: 114862
           Summary: std::uppercase not applying to nan's and inf's
           Product: gcc
           Version: 13.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: lcarreon at bigpond dot net.au
  Target Milestone: ---

The following code:

#include <limits>
#include <iostream>
#include <iomanip>

int main()
{
  double values[] =
  {
    std::numeric_limits<double>::quiet_NaN(),
    -std::numeric_limits<double>::quiet_NaN(),
    std::numeric_limits<double>::signaling_NaN(),
    -std::numeric_limits<double>::signaling_NaN(),
    std::numeric_limits<double>::infinity(),
    -std::numeric_limits<double>::infinity()
  };

  for (const auto& value : values)
  {
    std::cout
      << std::uppercase
      << std::fixed << std::setw(17) << std::left << value
      << "  "
      << std::fixed << std::setw(10) << std::left << std::setprecision(0) <<
value
      << "  "
      << std::fixed << std::setw(15) << std::left << std::setprecision(4) <<
value
      << "  "
      << std::fixed << std::setw(17) << std::left << std::setprecision(6) <<
value
      << std::endl;
  }

  return 0;
}

Generates the following output:

nan                nan         nan              nan
-nan               -nan        -nan             -nan
nan                nan         nan              nan
-nan               -nan        -nan             -nan
inf                inf         inf              inf
-inf               -inf        -inf             -inf

Which in my opinion is incorrect because it is not applying std::uppercase.

Reply via email to