C++ 命名要求: Formatter (C++20 起)
來自 cppreference.com
Formatter 是一種抽象了給定格式化引數型別和字元型別的格式化操作的型別。標準庫提供的 std::formatter
特化必須滿足 Formatter 的要求,除非另有說明。
Formatter 能夠格式化 const 和非 const 引數,通常透過提供一個接受 const 引用的 format
成員函式。
[編輯] 要求
如果一個型別滿足 BasicFormatter 並且給定以下型別和值,則下表中所示的表示式是有效的並具有指示的語義,則該型別滿足 Formatter
型別 | 定義 |
CharT
|
字元型別 |
Arg
|
格式化引數型別 |
格式化器(Formatter)
|
用於型別 Arg 和 CharT 的 Formatter 型別 |
OutputIt
|
舊版輸出迭代器 型別 |
ParseCtx
|
std::basic_format_parse_context < CharT>
|
FmtCtx
|
std::basic_format_context < OutputIt, CharT>
|
值 | 定義 |
f | 型別為(可能帶有 const 限定符)Formatter 的值 |
arg | 型別為 Arg 的左值 |
t | 可轉換為(可能帶有 const 限定符)Arg 的型別的值 |
parse_ctx | 型別為 ParseCtx 的左值,滿足以下所有條件
|
fmt_ctx | 型別為 FmtCtx 的左值 |
表示式 | 返回型別 | 語義 |
---|---|---|
f.format(t, fmt_ctx) | FmtCtx::iterator
|
|
f.format(arg, fmt_ctx) | FmtCtx::iterator
|
如上所述,但不修改 arg。 |
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 3892 | C++20 | 如果 format-spec 不存在,則 pc.begin() 的值不明確 | 已明確 |