Difference between revisions of "cpp/utility/format/ranges formatter"
m (~ fmt) |
m (fmt.) |
||
(One intermediate revision by one user not shown) | |||
Line 12: | Line 12: | ||
{{dcl|notes={{mark expos}}|1= | {{dcl|notes={{mark expos}}|1= | ||
template< std::range_format K, ranges::input_range R, class CharT > | template< std::range_format K, ranges::input_range R, class CharT > | ||
− | struct range-default-formatter; | + | struct /*range-default-formatter*/; |
}} | }} | ||
{{dcl end}} | {{dcl end}} | ||
Line 32: | Line 32: | ||
{{sdsc end}} | {{sdsc end}} | ||
− | The syntax is fully described in | + | The syntax is fully described in {{rlpsd|range formatter#Range format specification}}. |
For specializations of {{tt|std::formatter}} where {{c|std::format_kind<R>}} is either {{c|std::range_format::string}} or {{c|std::range_format::debug_string}}, the {{spar|format-spec}} is {{spar|std-format-spec}} instead of {{spar|range-format-spec}} (which uses {{c|std::formatter<std::basic_string<CharT>, CharT>}} as the underlying formatter). | For specializations of {{tt|std::formatter}} where {{c|std::format_kind<R>}} is either {{c|std::range_format::string}} or {{c|std::range_format::debug_string}}, the {{spar|format-spec}} is {{spar|std-format-spec}} instead of {{spar|range-format-spec}} (which uses {{c|std::formatter<std::basic_string<CharT>, CharT>}} as the underlying formatter). |
Latest revision as of 13:26, 2 October 2024
Defined in header <format>
|
||
template< ranges::input_range R, class CharT > requires (std::format_kind<R> != std::range_format::disabled) && |
(since C++23) | |
Helper templates |
||
template< std::range_format K, ranges::input_range R, class CharT > struct /*range-default-formatter*/; |
(exposition only*) | |
The template specialization of std::formatter for the range types allows users to convert a range to its textual representation as a collection of elements or a string using formatting functions.
The specialization is derived from range-default-formatter
<std::format_kind<R>, R, CharT>.
The specialization is enabled if R satisfies input_range
, std::format_kind<R> is not std::range_format::disabled, and std::formattable<ranges::range_reference_t<R>, CharT> is true.
This specialization meets the Formatter requirements if const R models input_range
and ranges::range_reference_t<const R> models std::formattable<CharT>. It always meets the BasicFormatter requirements.
Contents |
[edit] Format specification
The syntax of range-format-spec is:
range-fill-and-align (optional) width (optional) n (optional) range-type (optional) range-underlying-spec (optional)
|
|||||||||
The syntax is fully described in range format specification.
For specializations of std::formatter
where std::format_kind<R> is either std::range_format::string or std::range_format::debug_string, the format-spec is std-format-spec instead of range-format-spec (which uses std::formatter<std::basic_string<CharT>, CharT> as the underlying formatter).
[edit] Specializations of range-default-formatter
formatting utility for ranges in sequence form (class template specialization) | |
formatting utility for ranges in map form (class template specialization) | |
formatting utility for ranges in set form (class template specialization) | |
formatting utility for ranges in string or escaped string form (class template specialization) |
[edit] Example
This section is incomplete Reason: example |
[edit] See also
(C++20) |
defines formatting rules for a given type (class template) |
(C++23) |
class template that helps implementing std::formatter specializations for range types (class template) |