Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/utility/format/ranges formatter"

From cppreference.com
< cpp‎ | utility‎ | format
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 [[cpp/utility/format/range_formatter#Range format specification|range format specification]].
+
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

 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 
 
 
Defined in header <format>
template< ranges::input_range R, class CharT >

    requires (std::format_kind<R> != std::range_format::disabled) &&
              std::formattable<ranges::range_reference_t<R>, CharT>

struct formatter<R, CharT>;
(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) [edit]
formatting utility for ranges in map form
(class template specialization) [edit]
formatting utility for ranges in set form
(class template specialization) [edit]
formatting utility for ranges in string or escaped string form
(class template specialization) [edit]

[edit] Example

[edit] See also

(C++20)
defines formatting rules for a given type
(class template) [edit]
class template that helps implementing std::formatter specializations for range types
(class template) [edit]