std::basic_format_arg<Context>::handle
| Definiert in Header <format> |
||
| template< class Context > class basic_format_arg<Context>::handle; |
(seit C++20) | |
Ein typerased Wrapper, der die Formatierung eines Objekts eines benutzerdefinierten Typs ermöglicht.
handle-Objekte werden typischerweise von std::make_format_args erstellt und durch std::visit_format_arg oder die visit-Memberfunktionen von std::basic_format_arg(seit C++26) zugegriffen.
Inhalt |
[edit] Datenmember
Eine typische Implementierung von handle ist TriviallyCopyable und speichert nur zwei nicht-statische Datenmember:
- ein const void*-Zeiger auf das zu formatierende Objekt, und
- ein void (*)(std::basic_format_parse_context<Context::char_type>&, Context&, const void*)-Funktionszeiger auf die Funktion, die die in der
format-Memberfunktion benötigten Operationen durchführt (siehe unten).
[edit] Memberfunktionen
| format (C++20) |
formatiert das referenzierte Objekt mit den gegebenen Kontexten (öffentliche Memberfunktion) |
std::basic_format_arg<Context>::handle::format
| void format( std::basic_format_parse_context<Context::char_type>& parse_ctx, Context& format_ctx ) const; |
(seit C++20) | |
Seien
-
Tsei der Typ des Formatierungsarguments, -
TDsei std::remove_const_t<T>, -
TQsei const TD, wenn const TD __formattable_with<Context> erfüllt, oderTDandernfalls, und -
refsei eine Referenz auf das Formatierungsargument.
Äquivalent zu: typename Context::template formatter_type<TD> f;
parse_ctx.advance_to(f.parse(parse_ctx));
format_ctx.advance_to(f.format(const_cast<TQ&>(static_cast<const TD&>(ref)), format_ctx));
[edit] Hinweise
Ein handle hat Referenzsemantik für das formatierte Argument und verlängert dessen Lebensdauer nicht. Es liegt in der Verantwortung des Programmierers sicherzustellen, dass das Argument den handle überlebt. Normalerweise wird ein handle nur innerhalb von Formatierungsfunktionen verwendet.
[edit] Siehe auch
| (C++20) |
Klassentemplate, das den Zugriff auf ein Formatierungsargument für benutzerdefinierte Formatierer ermöglicht (Klassentemplate) |
| (C++20)(C++20) |
erstellt ein typ-erased Objekt, das auf alle Formatierungsargumente verweist und in format_args konvertierbar ist(Funktionstemplate) |