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

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Actually I think we're doing exactly what the standard requires:

    ios_base::fmtflags __fltfield = __flags & ios_base::floatfield;
    ...
    // [22.2.2.2.2] Table 58
    if (__fltfield == ios_base::fixed)
      *__fptr++ = 'f';


when (flags & ios_base::floatfield) == ios_base::fixed the conversion specifier
is %f and uppercase is not considered. There is no way to use a conversion
specifier of %F with std::num_put. That seems odd, but it's what the standard
says.

Libc++ does what you expect, which seems to be non-conforming.

I don't see any library issues about this, so I'll talk to the committee.

Reply via email to