Files
cppdraft_translate/cppdraft/format/formattable.md
2025-10-25 03:02:53 +03:00

31 lines
2.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[format.formattable]
# 28 Text processing library [[text]](./#text)
## 28.5 Formatting [[format]](format#formattable)
### 28.5.6 Formatter [[format.formatter]](format.formatter#format.formattable)
#### 28.5.6.3 Concept formattable [format.formattable]
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L7097)
Let *fmt-iter-for*<charT> be an unspecified type
that models[output_iterator](iterator.concept.output#concept:output_iterator "24.3.4.10Concept output_­iterator[iterator.concept.output]")<const charT&> ([[iterator.concept.output]](iterator.concept.output "24.3.4.10Concept output_­iterator"))[.](#1.sentence-1)
template<class T, class Context, class Formatter = typename Context::template formatter_type<remove_const_t<T>>>concept [*formattable-with*](#concept:formattable-with "28.5.6.3Concept formattable[format.formattable]") = // *exposition only*[semiregular](concepts.object#concept:semiregular "18.6Object concepts[concepts.object]")<Formatter> &&requires(Formatter& f, const Formatter& cf, T&& t, Context fc,
basic_format_parse_context<typename Context::char_type> pc){{ f.parse(pc) } -> [same_as](concept.same#concept:same_as "18.4.2Concept same_­as[concept.same]")<typename decltype(pc)::iterator>; { cf.format(t, fc) } -> [same_as](concept.same#concept:same_as "18.4.2Concept same_­as[concept.same]")<typename Context::iterator>; };
template<class T, class charT>concept [formattable](#concept:formattable "28.5.6.3Concept formattable[format.formattable]") =[*formattable-with*](#concept:formattable-with "28.5.6.3Concept formattable[format.formattable]")<remove_reference_t<T>, basic_format_context<*fmt-iter-for*<charT>, charT>>;
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L7119)
A type T and a character type charT model [formattable](#concept:formattable "28.5.6.3Concept formattable[format.formattable]") if formatter<remove_cvref_t<T>, charT> meets
the *BasicFormatter* requirements ([[formatter.requirements]](formatter.requirements "28.5.6.1Formatter requirements"))
and, if remove_reference_t<T> is const-qualified,
the *Formatter* requirements[.](#2.sentence-1)