C++ named requirements: Formatter (since C++20)
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 the following types and values, the expressions shown in the table below are valid and have the indicated semantics:
| Type | Definition | 
 CharT
 | 
a character type | 
 Arg
 | 
a formatting argument type | 
 Formatter
 | 
 a Formatter type for types Arg and CharT
 | 
 OutputIt
 | 
a LegacyOutputIterator type | 
 ParseCtx
 | 
std::basic_format_parse_context<CharT> | 
 FmtCtx
 | 
std::basic_format_context<OutputIt, CharT> | 
| Value | Definition | 
| f |  a value of type (possibly const-qualified) Formatter
 | 
| arg |  an lvalue of type Arg
 | 
| t |  a value of type convertible to (possibly const-qualified) Arg
 | 
| parse_ctx |  an lvalue of type ParseCtx satisfying all following conditions:
  | 
| fmt_ctx |  an lvalue of type FmtCtx
 | 
| Expression | Return type | Semantics | 
|---|---|---|
| f.format(t, fmt_ctx) | FmtCtx::iterator 
 | 
  | 
| f.format(arg, fmt_ctx) | FmtCtx::iterator
 | 
As above, but does not modify arg. | 
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++20 | the value of pc.begin() was unclear if format-spec is not present | made clear |