- format[meta header]
- function[meta id-type]
- std[meta namespace]
- range_formatter[meta class]
- cpp23[meta cpp]
template <ranges::input_range R, class FormatContext>
requires formattable<ranges::range_reference_t<R>, charT> &&
same_as<remove_cvref_t<ranges::range_reference_t<R>>, T>
typename FormatContext::iterator
format(R&& r, FormatContext& ctx) const; // (1)
- FormatContext[link /reference/format/basic_format_context.md]
- ranges::input_range[link /reference/ranges/input_range.md]
- ranges::range_reference_t[link /reference/ranges/range_reference_t.md]
受け取ったRangeオブジェクトR
を書式化する。
parse()
メンバ関数で解析した書式文字列の指定に基づいて、r
の値を文字列に変換し、以下をctx.out()
に出力する:- Range書式として
s
(文字列として出力)が指定された場合、basic_string
<charT>(
from_range
, r)
を出力する - そうでなく、Range書式として
?s
(デバッグ文字列として出力)が指定された場合、basic_string
<charT>(
from_range
, r)
に引用符を付け、エスケープシーケンスをエスケープして出力する - そうでなければ、
- 開きカッコを出力する
- Range
r
の各要素e
について、underlying()
のformatter
でe
を書式化して出力する- 最後の要素でなければ、区切り文字を出力する
- 閉じカッコを出力する
- Range書式として
出力がおわった位置の出力イテレータを返す。
- C++23
- Clang: ??
- GCC: ??
- Visual C++: ??