C++ named requirements: Formatter (since C++20)
From cppreference.net
Formatter は、与えられた書式化引数型と文字型に対する書式化操作を抽象化する型です。標準ライブラリによって提供される std::formatter の特殊化は、特に明記されていない限り、 Formatter の要件を満たすことが要求されます。
Formatter
は、constおよび非constの両方の引数をフォーマットすることができます。通常は、const参照を受け取る
format
メンバ関数を提供することで実現されます。
要件
型が Formatter を満たすのは、 BasicFormatter を満たし、かつ以下の型と値が与えられた場合に、下記の表に示す式が有効であり、指定された意味を持つ場合です:
| 型 | 定義 |
CharT
|
文字型 |
Arg
|
フォーマット引数型 |
Formatter
|
Arg
型と
CharT
型に対する
Formatter
型
|
OutputIt
|
LegacyOutputIterator 型 |
ParseCtx
|
std:: basic_format_parse_context < CharT > |
FmtCtx
|
std:: basic_format_context < OutputIt, CharT > |
| 値 | 定義 |
| f |
Formatter
型(const修飾可能性あり)の値
|
| arg |
Arg
型の左辺値
|
| t |
Arg
型(const修飾可能性あり)に変換可能な値
|
| parse_ctx |
ParseCtx
型の左辺値で、以下の条件をすべて満たすもの:
|
| fmt_ctx |
FmtCtx
型の左辺値
|
| 式 | 戻り値型 | セマンティクス |
|---|---|---|
| f. format ( t, fmt_ctx ) |
FmtCtx::iterator
|
|
| f. format ( arg, fmt_ctx ) |
FmtCtx::iterator
|
上記と同じですが、 arg を変更しません。 |
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3892 | C++20 | format-spec が存在しない場合の pc. begin ( ) の値が不明確であった | 明確化された |