Skip to content

Latest commit

 

History

History
97 lines (69 loc) · 4.88 KB

range-default-formatter.md

File metadata and controls

97 lines (69 loc) · 4.88 KB

range-default-formatter

  • format[meta header]
  • class template[meta id-type]
  • std[meta namespace]
  • cpp23[meta cpp]
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_format[link range_format.md]
  • ranges::input_range[link /reference/ranges/input_range.md]

概要

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>がすでにある)、以下のような用途が考えられる
    • ユーザー定義の文字列クラスを定義する場合に、format_kindで値としてrange_format::stringもしくはrange_format::debug_stringをもつよう特殊化するか (formatter<string, charT>をラップする方がかんたんではある)
    • std::vector<char>のような文字を要素とするシーケンスコンテナで、文字列形式で出力する書式オプション (s?s) を指定した際にrange-default-formatter<range_format::sequence, R, 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

処理系

参照