As an additional data point: the {fmt} library and Python's str.format use code points.

- Victor

On Mon, Aug 9, 2021 at 8:34 AM Victor Zverovich <> wrote:
Thanks Corentin for bringing this up. I think this should be at least a code point (that was the original intent which was lost to wording ambiguity), otherwise fill is pretty much useless. Grapheme cluster is an option but might be an overkill.


On Mon, Aug 9, 2021 at 8:30 AM Corentin <> wrote:

I wanted to bring this new LWG issue to your attention.

The author asks whether the fill character of std::format is
  • a code unit
  • a code point
  • a grapheme cluster
This might be an abi breaking thing, and implementation disagrees already apparently.

My gut feeling is that it needs to at least be a codepoint.
I do not know if there are any concerns with allowing a grapheme in terms of implementation or performance. There is definitively some motivation, especially for non-nfc format strings.

This sort of issue illustrates my point that using the term character in the standard can be problematic!

Have a great week,