C++ named requirements: BasicFormatter (since C++20)
From cppreference.net
BasicFormatter は、与えられたフォーマット引数型と文字型に対するフォーマット操作を抽象化する型です。 std::formatter の特殊化は、 BasicFormatter の要件を満たす必要があります。
BasicFormatter は、constおよび非constの両方の引数をフォーマットできる場合、 Formatter 要件を満たします。
要件
型は、それが準正則(semi-regular)である場合、すなわち以下を満たす場合に 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修飾されている可能性あり)の値
|
| g |
型
Formatter
の値
|
| arg |
型
Arg
の左辺値
|
| t |
型
Arg
(const修飾されている可能性あり)に変換可能な値
|
| parse_ctx |
型
ParseCtx
の左辺値で、以下の条件をすべて満たすもの:
|
| fmt_ctx |
型
FmtCtx
の左辺値
|
| 式 | 戻り値型 | セマンティクス |
|---|---|---|
| g. parse ( parse_ctx ) |
ParseCtx::iterator
|
|
| f. format ( arg, fmt_ctx ) |
FmtCtx::iterator
|
|
- ↑ これにより、フォーマッタは意味のあるエラーメッセージを出力できます。
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 3892 | C++20 | format-spec が存在しない場合の pc. begin ( ) の値が不明確であった | 明確化された |