This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Resolved status.

3639. Handling of fill character width is underspecified in std::format

Section: 22.14.2.2 [format.string.std] Status: Resolved Submitter: Victor Zverovich Opened: 2021-11-13 Last modified: 2023-03-23

Priority: 3

View other active issues in [format.string.std].

View all other issues in [format.string.std].

View all issues with Resolved status.

Discussion:

22.14.2.2 [format.string.std] doesn't specify if implementations should consider the estimated width of the fill character when substituting it into the formatted results.

For example:

auto s = std::format("{:🤡>10}", 42);

"🤡" (U+1F921) is a single code point but its estimated display width is two.

There are at least three possible resolutions:

  1. s == "🤡🤡🤡🤡42": use the estimated display width, correctly displayed on compatible terminals.

  2. s == "🤡🤡🤡🤡🤡🤡🤡🤡42": assume the display width of 1, incorrectly displayed.

  3. Require the fill character to have the estimated width of 1.

[2021-11-14; Daniel comments]

Resolving this issue should be harmonized with resolving LWG 3576.

[2022-01-30; Reflector poll]

Set priority to 3 after reflector poll. Sent to SG16.

[2023-01-11; LWG telecon]

P2572 would resolve this issue and LWG 3576.

[2023-03-22 Resolved by the adoption of P2572R1 in Issaquah. Status changed: SG16 → Resolved.]

Proposed resolution: