std::formatter - cppreference.com (original) (raw)
| Defined in header | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ------------------- | | 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).