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

履歴 編集

function
<format>

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

    using maybe-const-adaptor =
      fmt-maybe-const<adaptor-type<T, Container, U...>, charT>; // 説明専用

    template <class FormatContext>
    typename FormatContext::iterator
      format(T& x, FormatContext& ctx) const;                   // (1) C++20

    template<class FormatContext>
    typename FormatContext::iterator
      format(maybe-const-adaptor& r, FormatContext& ctx) const; // (2) C++23

## 概要

受け取った型`T`のオブジェクトを書式化する。

- (1) : デフォルトの`formatter`および、`std::pair`と`std::tuple`に対する`formatter`の特殊化でのシグニチャ
- (2) : コンテナアダプタに対する特殊化でのシグニチャ

## 効果

- `parse()`メンバ関数で解析した書式文字列の指定に基づいて、`x`の値を文字列に変換する
- `std::pair`と`std::tuple`に対する`formatter`の特殊化の場合、以下を`ctx.out()`に出力する：
  - 開きカッコを出力する
  - 範囲`[0, タプルの要素数)`の各要素`I`について、
    - `I != 0`であれば区切り文字を出力する
    - タプルの`I`番目の要素を、その型の`formatter`で出力する
  - 閉じカッコを出力する

- コンテナアダプタに対する特殊化の場合、メンバとして以下を持っているとして、

      formatter<Container, charT> underlying_;

  - 以下と等価：

      return underlying_.format(r.c, ctx);

## 戻り値

出力がおわった位置の出力イテレータを返す。

## バージョン

### 言語

- C++20

### 処理系

- Clang: ??
- GCC: 13 ✅
- Visual C++: ??