Namespaces
Variants

C++ named requirements: Formatter (since C++20)

From cppreference.net
C++ named requirements

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 型の左辺値で、以下の条件をすべて満たすもの:
  • parse_ctx. begin ( ) フォーマット文字列 内でフォーマット中の置換フィールドの フォーマット指定 の先頭を指す
  • フォーマット指定 が存在しないか空の場合、 parse_ctx. begin ( ) == parse_ctx. end ( ) または * parse_ctx. begin ( ) == '}' のいずれかが成り立つ
fmt_ctx FmtCtx 型の左辺値
戻り値型 セマンティクス
f. format ( t, fmt_ctx ) FmtCtx::iterator
  • f に格納された指定子に従って t をフォーマットし、出力を fmt_ctx. out ( ) に書き込み、出力範囲の終端イテレータを返します。
  • 出力は以下のみに依存できます:
    • t ,
    • fmt_ctx. locale ( ) ,
    • 最後の f. parse ( parse_ctx ) 呼び出しからの範囲 [ parse_ctx. begin ( ) , parse_ctx. end ( ) ) 、および
    • fmt_ctx. arg ( n ) std::size_t 型の任意の値 n に対して)
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 ( ) の値が不明確であった 明確化された