Title
println ignores the locale imbued in std::ostream
Status
new
Section
[ostream.formatted.print]
Submitter
Jens Maurer

Created on 2024-04-30.00:00:00 last changed 1 month ago

Messages

Date: 2024-05-04.15:39:15

Proposed resolution:

This wording is relative to N4981.

  1. Modify [ostream.formatted.print] as indicated:

    template<class... Args>
      void println(ostream& os, format_string<Args...> fmt, Args&&... args);
    

    -2- Effects: Equivalent to:

    print(os, "{}\n", format(os.getloc(), fmt, std::forward<Args>(args)...));
    
Date: 2024-04-30.00:00:00

[ostream.formatted.print] specifies that std::print uses the locale imbued in the std::ostream& argument for formatting, by using this equivalence:

vformat(os.getloc(), fmt, args);

(in the vformat_(non)unicode delegation).

However, std::println ignores the std::ostream's locale for its locale-dependent formatting:

print(os, "{}\n", format(fmt, std::forward<Args>(args)...));

This is inconsistent.

History
Date User Action Args
2024-05-04 15:39:15adminsetmessages: + msg14100
2024-04-30 00:00:00admincreate