class template
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::map
やstd::flat_map
などの連想コンテナに対する特殊化。デバッグ出力の有効化と、{1: a, 2: b}
形式での出力を行う
- (4) :
std::set
やstd::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 |
バージョン
言語
処理系
参照