table of contents
        
      
      
    | std::range_formatter(3) | C++ Standard Libary | std::range_formatter(3) | 
NAME¶
std::range_formatter - std::range_formatter
Synopsis¶
 Defined in header <format>
  
   template< class T, class CharT = char >
  
   requires std::same_as<std::remove_cvref_t<T>, T> &&
    (since C++23)
  
   std::formattable<T, CharT>
  
   class range_formatter;
  
   The std::range_formatter is a helper class template for implementing
    std::formatter
  
   specializations for range types.
Member objects¶
 Member name Definition
  
   underlying_ (private) the underlying formatter of type std::formatter<T,
    CharT>
  
   (exposition-only member object*)
  
   a string representing the separator of the range
  
   separator_ (private) formatted result. The default separator is ",
    ".
  
   (exposition-only member object*)
  
   a string representing the opening bracket of the range
  
   opening-bracket_ (private) formatted result. The default opening bracket is
    "[".
  
   (exposition-only member object*)
  
   a string representing the closing bracket of the range
  
   closing-bracket_ (private) formatted result. The default closing bracket is
    "]".
  
   (exposition-only member object*)
Member functions¶
 set_separator sets a specified separator for the range formatted
    result
  
   (public member function)
  
   sets a specified opening and closing brackets for the range formatted
  
   set_brackets result
  
   (public member function)
  
   underlying returns the underlying 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_formatter::set_separator
  
   constexpr void set_separator( std::basic_string_view<CharT> sep )
    noexcept;
  
   Assigns sep to separator_.
std::range_formatter::set_brackets
  
   constexpr void set_brackets( std::basic_string_view<CharT> opening,
  
   std::basic_string_view<CharT> closing ) noexcept;
  
   Assigns opening and closing to opening-bracket_ and closing-bracket_,
    respectively.
std::range_formatter::underlying
  
   constexpr std::formatter<T, CharT>& underlying(); (1)
  
   constexpr const std::formatter<T, CharT>& underlying() const;
    (2)
  
   Returns underlying_ (the underlying formatter).
std::range_formatter::parse
  
   template< class ParseContext >
  
   constexpr auto parse( ParseContext& ctx ) ->
  ParseContext::iterator;
  
   Parses the format specifiers as a range-format-spec and stores the parsed
    specifiers
  
   in the current object.
  
   Calls underlying_.parse(ctx) to parse format-spec in range-format-spec or, if
    the
  
   latter is not present, an empty format-spec.
  
   If range-type or the n option is present, the values of opening-bracket_,
  
   closing-bracket_, and separator_ are modified as required.
  
   It calls underlying_.set_debug_format() if:
  
   * the range-type is neither s nor ?s,
  
   * underlying_.set_debug_format() is a valid expression, and
  
   * there is no range-underlying-spec.
  
   Returns an iterator past the end of the range-format-spec.
std::range_formatter::format
  
   template< ranges::input_range R, class FormatContext >
  
   requires std::formattable<ranges::range_reference_t<R>, CharT>
    &&
  
  
    std::same_as<std::remove_cvref_t<ranges::range_reference_t<R>>,
    T>
  
   auto format( R&& r, FormatContext& ctx ) const ->
    FormatContext::iterator;
  
   If the range-type was either s or ?s, it writes the formatted
  
   std::basic_string<CharT>(std::from_range, r) as a string or an escaped
    string,
  
   respectively, into ctx.out().
  
   Otherwise, it writes the following into ctx.out() as specified by
    range-format-spec,
  
   in order:
  
   * opening-bracket_,
  
   * for each formattable element e of the range r:
  
   * the result of writing e via underlying_, and
  
   * separator_, unless e is the last element of r, and
  
   * closing-bracket_.
  
   Returns an iterator past the end of the output range.
  
   Defect reports
  
   The following behavior-changing defect reports were applied retroactively to
  
   previously published C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   LWG 3892 C++23 the formatting of nested ranges was incorrect corrected
See also¶
 formatter defines formatting rules for a given type
  
   (C++20) (class template)
| 2024.06.10 | http://cppreference.com |