最終更新日時(UTC):
が更新

履歴 編集

class template
<format>

std::range-default-formatter(C++23)

namespace std {
  template <range_format K, ranges::input_range R, class charT>
  struct range-default-formatter;      // (1) C++23

  template <ranges::input_range R, class charT>
  struct range-default-formatter<
    range_format::sequence, R, charT>; // (2) C++23

  template <ranges::input_range R, class charT>
  struct range-default-formatter<
    range_format::map, R, charT>;      // (3) C++23

  template <ranges::input_range R, class charT>
  struct range-default-formatter<
    range_format::set, R, charT>;      // (4) C++23

  template <range_format K, ranges::input_range R, class charT>
    requires (K == range_format::string || K == range_format::debug_string)
  struct range-default-formatter<
    K, R, charT>;                      // (5) C++23
}

概要

range-default-formatterは、Range・コンテナに対するデフォルトの書式解析と書式文字列化を行う説明専用クラスである。

このクラスは、formatterクラスのRange・コンテナに対する特殊化実装として標準ライブラリの内部で使用される。

このクラスの内部実装としてrange_formatterが使用される。

  • (1) : プライマリテンプレート。宣言のみ
  • (2) : Range・シーケンスコンテナに対する特殊化。デバッグ出力の有効化と、[a, b, c]形式の出力を行う
  • (3) : std::mapstd::flat_mapなどの連想コンテナに対する特殊化。デバッグ出力の有効化と、{1: a, 2: b}形式での出力を行う
  • (4) : std::setstd::flat_setなどの集合コンテナに対する特殊化。デバッグ出力の有効化と、{a, b, c}形式の出力を行う
  • (5) : 文字列形式の出力を行うRangeに対する特殊化。Rangeを文字列として出力し、range_format::debug_string指定であればデバッグ文字列として出力する

備考

  • (5) : この特殊化は規格上、標準ライブラリ内では使用されないが (formatter<string, charT>がすでにある)、以下のような用途が考えられる

メンバ関数

メンバ関数 説明 対応バージョン
parse 書式の解析を行う C++23
format 書式化を行う C++23

sequenceに対する特殊化

メンバ関数 説明 対応バージョン
constexpr void set_separator(basic_string_view<charT> sep); 要素の区切り文字を設定する C++23
constexpr void set_brackets(basic_string_view<charT> opening, basic_string_view<charT> closing); 全体の囲み文字を設定する C++23

mapに対する特殊化

メンバ関数 説明 対応バージョン
constexpr range-default-formatter(); 全体の囲み文字を{}、要素の囲み文字を空、要素同士の区切り文字を": "に設定する C++23

setに対する特殊化

メンバ関数 説明 対応バージョン
constexpr range-default-formatter(); 全体の囲み文字を{}に設定する C++23

バージョン

言語

  • C++23

処理系

参照