[format.range.fmtset]

# 28 Text processing library [[text]](./#text)

## 28.5 Formatting [[format]](format#range.fmtset)

### 28.5.7 Formatting of ranges [[format.range]](format.range#fmtset)

#### 28.5.7.5 Specialization of *range-default-formatter* for sets [format.range.fmtset]

[ð](#lib:range-default-formatter)

namespace std {template<ranges::[input_range](range.refinements#concept:input_range "25.4.6 Other range refinements [range.refinements]") R, class charT>struct *range-default-formatter*<range_format::set, R, charT> {private:using *maybe-const-set* = *fmt-maybe-const*<R, charT>; // *exposition only* range_formatter<remove_cvref_t<ranges::range_reference_t<*maybe-const-set*>>,
 charT> *underlying_*; // *exposition only*public:constexpr *range-default-formatter*(); template<class ParseContext>constexpr typename ParseContext::iterator
 parse(ParseContext& ctx); template<class FormatContext>typename FormatContext::iterator
 format(*maybe-const-set*& r, FormatContext& ctx) const; };}

[ð](#lib:range-default-formatter,constructor)

`constexpr range-default-formatter();
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L8316)

*Effects*: Equivalent to:*underlying_*.set_brackets(*STATICALLY-WIDEN*<charT>("{"), *STATICALLY-WIDEN*<charT>("}"));

[ð](#lib:parse,range-default-formatter)

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

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L8332)

*Effects*: Equivalent to: return *underlying_*.parse(ctx);

[ð](#lib:format,range-default-formatter)

`template<class FormatContext>
  typename FormatContext::iterator
    format(maybe-const-set& r, FormatContext& ctx) const;
`

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L8345)

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