- format[meta header]
- function[meta id-type]
- std[meta namespace]
- formatter[meta class]
- cpp20[meta cpp]
template <class ParseContext>
constexpr typename ParseContext::iterator
parse(ParseContext& ctx);
- ParseContext[link /reference/format/basic_format_parse_context.md]
書式文字列の範囲[ctx.begin(), ctx.end())
を解析する。
-
デフォルトの
formatter
の場合、std::format()
関数ページに記載されている「標準のオプション書式」を解析する -
std::pair
とstd::tuple
に対するformatter
の特殊化の場合、std::format()
関数ページに記載されている「pair、tupleの書式」を解析する- このとき、書式によって以下を設定する
- 全体の囲み文字を、
set_brackets()
メンバ関数で設定する - 要素の区切り文字を、
set_separator()
メンバ関数で設定する - 各要素の
formatter
をe
として、e.set_debug_format()
が有効な式であれば、それを呼び出してデバッグ書式を有効にする
- 全体の囲み文字を、
- このとき、書式によって以下を設定する
-
コンテナアダプタに対する特殊化の場合、メンバとして以下を持っているとして、
formatter<Container, charT> underlying_;
- 以下と等価:
return underlying_.parse(ctx);
ctx
のうち、解析がおわった位置を指すイテレータを返す。
- pair / tupleが文字・文字列を要素とする場合、デバッグ書式は常に有効となり、無効にする方法はない
- C++20
- Clang: ??
- GCC: 13 [mark verified]
- Visual C++: ??