最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

function
<format>

# std::formatter::parse(C++20)

    template <class ParseContext>
    constexpr typename ParseContext::iterator
      parse(ParseContext& ctx);

## 概要

書式文字列の範囲`[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 ✅
- Visual C++: ??