std:: formatter < pair-or-tuple >
|
ヘッダーで定義
<format>
|
||
|
template
<
class
CharT,
std::
formattable
<
CharT
>
...
Ts
>
struct formatter < /*pair-or-tuple*/ < Ts... > , CharT > ; |
(C++23以降) | |
std::formatter のテンプレート特殊化は、 std::pair および std::tuple に対して、ユーザーが フォーマット関数 を使用してペアまたはタプルを要素の集合としてテキスト表現に変換することを可能にします。
説明専用の名前 /*pair-or-tuple*/ は、クラステンプレート std::pair または std::tuple のいずれかを示します。
この特殊化は、 Formatter 要件を満たす( ( std:: formattable < const Ts, CharT > && ... ) が true の場合)。常に BasicFormatter 要件を満たす。
目次 |
フォーマット仕様
tuple-format-spec の構文は以下の通りです:
| tuple-fill-and-align (オプション) width (オプション) tuple-type (オプション) | |||||||||
tuple-fill-and-align
は、
fill-and-align
と同様に解釈されますが、
tuple-fill-and-align
における
fill
は、
{
、
}
、または
:
以外の任意の文字です。
width は 標準フォーマット幅指定 で記述されます。
tuple-type はタプルのフォーマット方法を変更し、特定のオプションは特定の引数型でのみ有効です。
利用可能なタプル表示型は以下の通りです:
-
m: 開き括弧と閉じ括弧の両方が "" であるべきであることを示し、区切り文字は ": " であるべきことを示します。
-
-
mが tuple-type として選択された場合、 sizeof... ( Ts ) == 2 が true でない限り、プログラムは ill-formed です。
-
-
n: セパレータ、開き括弧、閉じ括弧が "" であるべきことを示します。
メンバーオブジェクト
| メンバー名 | 定義 |
underlying_
(private)
|
型
std::
tuple
<
std::
formatter
<
std::
remove_cvref_t
<
Ts
>
, CharT
>
...
>
の基底フォーマッタのタプル
( 説明専用メンバーオブジェクト* ) |
separator_
(private)
|
タプルフォーマット結果のセパレータを表す文字列(デフォルトは
", "
)
( 説明専用メンバーオブジェクト* ) |
opening-bracket_
(private)
|
タプルフォーマット結果の開始ブラケットを表す文字列(デフォルトは
"("
)
( 説明専用メンバーオブジェクト* ) |
closing-bracket_
(private)
|
タプルフォーマット結果の終了ブラケットを表す文字列(デフォルトは
")"
)
( 説明専用メンバーオブジェクト* ) |
メンバー関数
|
set_separator
|
タプルフォーマット結果の区切り文字を指定する
(公開メンバ関数) |
|
set_brackets
|
タプルフォーマット結果の開始括弧と終了括弧を指定する
(公開メンバ関数) |
|
parse
|
tuple-format-spec
で指定されたフォーマット指定子を解析する
(公開メンバ関数) |
|
format
|
tuple-format-spec
で指定されたタプルフォーマット出力を書き込む
(公開メンバ関数) |
std::formatter< pair-or-tuple >:: set_separator
|
constexpr
void
set_separator
(
std::
basic_string_view
<
CharT
>
sep
)
noexcept
;
|
||
sep
を
separator_
に割り当てます。
std::formatter< pair-or-tuple >:: set_brackets
|
constexpr
void
set_brackets
(
std::
basic_string_view
<
CharT
>
opening,
std:: basic_string_view < CharT > closing ) noexcept ; |
||
opening
および
closing
をそれぞれ
opening-bracket_
と
closing-bracket_
に割り当てます。
std::formatter< pair-or-tuple >:: parse
|
template
<
class
ParseContext
>
constexpr auto parse ( ParseContext & ctx ) - > ParseContext :: iterator ; |
||
書式指定子を tuple-format-spec として解析し、解析された指定子を現在のオブジェクトに格納します。
tuple-type
または
n
オプションが存在する場合、
opening-bracket
、
closing-bracket
、および
separator
の値が必要に応じて変更されます。
underlying_
内の各要素
e
に対して、空の
format-spec
を解析するために
e.
parse
(
ctx
)
を呼び出し、
e.
set_debug_format
(
)
が有効な式である場合、
e.
set_debug_format
(
)
を呼び出します。
tuple-format-spec の終端を過ぎたイテレータを返します。
std::formatter< pair-or-tuple >:: format
|
template
<
class
FormatContext
>
FormatContext
::
iterator
|
||
/*maybe-const-pair-or-tuple*/ は以下を表します:
- const /*pair-or-tuple*/ 、もし ( std:: formattable < const Ts, CharT > && ... ) が true の場合、
- /*pair-or-tuple*/ それ以外の場合。
以下の内容を ctx. out ( ) に tuple-format-spec で指定された通りに順に書き込みます:
-
opening-bracket_、 -
各インデックス
I
について
[ 0 ,sizeof... ( Ts )):
-
-
もし
I
!
=
0
ならば、
separator_、 -
std
::
get
<
I
>
(
elems
)
を
std
::
get
<
I
>
(
underlying_) を通して書き込んだ結果、および
-
もし
I
!
=
0
ならば、
-
closing-bracket_。
出力範囲の終端を過ぎたイテレータを返します。
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 3892 | C++23 | ネストされたタプルのフォーマットが不正であった | 修正済み |
関連項目
|
(C++20)
|
指定された型のフォーマット規則を定義する
(クラステンプレート) |