format should not print bool with 'c'
Zhihao Yuan

Created on 2021-11-30.00:00:00 last changed 3 months ago


Date: 2022-02-10.12:58:57

Proposed resolution:

This wording is relative to N4901.

  1. Modify [format.string.std], Table 67 [tab:format.type.bool], as indicated:

    Table 67 — Meaning of type options for bool [tab:format.type.bool]
    Type Meaning
    none, s Copies textual representation, either true or false, to the output.
    b, B, c, d, o, x, X As specified in Table 65 [tab:format.type.int] for the value static_cast<unsigned char>(value).
Date: 2022-02-10.00:00:00

[ 2022-02-10 Approved at February 2022 virtual plenary. Status changed: Tentatively Ready → WP. ]

Date: 2022-01-15.00:00:00

[ 2022-01-30; Reflector poll ]

Set status to Tentatively Ready after five votes in favour during reflector poll.

Date: 2021-12-15.00:00:00

[ 2021-12-04; Daniel comments ]

This issue relates to LWG 3644.

Date: 2021-11-30.00:00:00

P1652R1 prints integral inputs as characters with 'c' and preserves the wording to treat bool as a one-byte unsigned integer; this accidentally asks the implementation to cast bool into a 1-bit character if a user asks for the 'c' presentation type.

Recent wording improvements made this implied behavior obvious.

Date User Action Args
2023-11-22 15:47:43adminsetstatus: wp -> c++23
2022-02-10 12:58:57adminsetmessages: + msg12359
2022-02-10 12:58:57adminsetstatus: ready -> wp
2022-01-30 16:42:38adminsetmessages: + msg12304
2022-01-30 16:42:38adminsetstatus: new -> ready
2021-12-04 14:37:06adminsetmessages: + msg12247
2021-12-04 14:37:06adminsetmessages: + msg12246
2021-11-30 00:00:00admincreate