C++ named requirements: Formatter
From cppreference.com
Formatter is a type that abstracts formatting operations for a given formatting argument type and character type. Specializations of std::formatter provided by the standard library are required to meet the requirements of Formatter except as noted otherwise.
A Formatter is able to format both const and non-const arguments, typically by providing a format
member function that takes a const reference.
Requirements
A type satisfies Formatter if it satisfies BasicFormatter and given
-
Arg
, a formatting argument type -
CharT
, a character type -
Formatter
, a Formatter type for typesArg
andCharT
-
OutputIt
, a LegacyOutputIterator type -
f
, a value of typeFormatter
-
arg
, an lvalue of typeArg
-
t
, a value of type convertible to (possibly const)Arg
-
ParseContext
, an alias of std::basic_format_parse_context<CharT> -
FormatContext
, an alias of std::basic_format_context<OutputIt, CharT> -
parse_ctx
, an lvalue of typeParseContext
-
format_ctx
, an lvalue of typeFormatContext
Expression | Return type | Semantics |
---|---|---|
f.format(t, format_ctx) | FormatContext::iterator |
|
f.format(arg, format_ctx) | FormatContext::iterator |
As above, but does not modify |
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
P2418R2 | C++20 | objects that are neither const-usable nor copyable (such as generator-like objects) are not formattable |
allow formatting these objects (relaxed formatter requirements) |