Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/utility/format/ranges formatter/range default formatter map"

From cppreference.com
m (rm "exposition-only" already mentioned in Synopsis.)
m (fmt)
Line 4: Line 4:
 
template< ranges::input_range R, class CharT >
 
template< ranges::input_range R, class CharT >
 
struct range-default-formatter<range_format::map, R, CharT>;
 
struct range-default-formatter<range_format::map, R, CharT>;
 
 
}}
 
}}
  
Line 35: Line 34:
  
 
Equivalent to:
 
Equivalent to:
 
 
{{c multi
 
{{c multi
 
|underlying_.set_brackets(STATICALLY_WIDEN<CharT>("{"), STATICALLY_WIDEN<CharT>("}"));
 
|underlying_.set_brackets(STATICALLY_WIDEN<CharT>("{"), STATICALLY_WIDEN<CharT>("}"));
Line 47: Line 45:
 
* {{tti|element-type}} is a specialization of {{lc|std::pair}}, or
 
* {{tti|element-type}} is a specialization of {{lc|std::pair}}, or
 
* {{tti|element-type}} is a specialization of {{lc|std::tuple}} and {{tt|std::tuple_size_v<''element-type''>}} is {{c|2}}.
 
* {{tti|element-type}} is a specialization of {{lc|std::tuple}} and {{tt|std::tuple_size_v<''element-type''>}} is {{c|2}}.
 
 
}}
 
}}
  

Revision as of 02:08, 4 January 2024

 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 
 
 
Defined in header <format>
template< ranges::input_range R, class CharT >
struct range-default-formatter<range_format::map, R, CharT>;
(since C++23)
(exposition only*)

The class template range-default-formatter for range types is specialized for formatting range as a map of keys to values if std::format_kind<R> is std::range_format::map.

Contents

Member types

Member type Definition
maybe-const-map (private) /*fmt-maybe-const*/<R, CharT>
(exposition-only member type*)
element-type (private) std::remove_cvref_t<ranges::range_reference_t<maybe-const-map>>

Member objects

Member name Definition
underlying_ (private) the underlying formatter of type std::range_formatter<element-type, CharT>
(exposition-only member object*)

Member functions

(constructor)
constructs a range-default-formatter
(public member function)
parse
parses the format specifier as specified by range-format-spec
(public member function)
format
writes the range formatted output as specified by range-format-spec
(public member function)

std::range-default-formatter<std::range_format::map>::range-default-formatter

constexpr range-default-formatter();

Equivalent to: underlying_.set_brackets(STATICALLY_WIDEN<CharT>("{"), STATICALLY_WIDEN<CharT>("}"));
underlying_.underlying().set_brackets({}, {});
underlying_.underlying().set_separator(STATICALLY-WIDEN<charT>(": "));

where STATICALLY_WIDEN<CharT>("...") is "..." if CharT is char, and L"..." if CharT is wchar_t.

The program is ill-formed unless:

  • element-type is a specialization of std::pair, or
  • element-type is a specialization of std::tuple and std::tuple_size_v<element-type> is 2.

std::range-default-formatter<std::range_format::map>::parse

template< class ParseContext >
constexpr auto parse( ParseContext& ctx ) -> typename ParseContext::iterator;

Equivalent to return underlying_.parse(ctx);.

Returns an iterator past the end of the range-format-spec.

std::range-default-formatter<std::range_format::map>::format

template< class FormatContext >

auto format( maybe-const-map& r, FormatContext& ctx ) const

    -> typename FormatContext::iterator;

Equivalent to return underlying_.format(r, ctx);.

Returns an iterator past the end of the output range.

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]