Namespaces
Variants

std::basic_format_arg<Context>:: handle

From cppreference.net
Definiert im Header <format>
template < class Context >
class basic_format_arg < Context > :: handle ;
(seit C++20)

Ein typloser Wrapper, der die Formatierung eines Objekts eines benutzerdefinierten Typs ermöglicht.

handle -Objekte werden typischerweise durch std::make_format_args erstellt und über std::visit_format_arg oder die visit -Memberfunktionen von std::basic_format_arg (seit C++26) zugänglich gemacht.

Inhaltsverzeichnis

Datenmitglieder

Eine typische Implementierung von handle ist TriviallyCopyable und speichert nur zwei nicht-statische Datenelemente:

  • 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 erforderlichen Operationen in der format Memberfunktion durchführt (siehe unten).

Memberfunktionen

format
(C++20)
formatiert das referenzierte Objekt mit den gegebenen Kontexten
(öffentliche Elementfunktion)

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)

Sei

  • T der Typ des Formatierungsarguments,
  • TD sei std:: remove_const_t < T > ,
  • TQ sei const TD falls const TD die Bedingung __formattable_with < Context > erfüllt, andernfalls TD , und
  • ref sei eine Referenz auf das Formatierungsargument.

Entspricht: 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 ) ) ;

Hinweise

Ein handle hat Referenzsemantik für das formatierte Argument und verlängert nicht dessen Lebensdauer. Es liegt in der Verantwortung des Programmierers, sicherzustellen, dass das Argument den handle überlebt. Normalerweise wird ein handle nur innerhalb von Formatierungsfunktionen verwendet.

Siehe auch

Klassentemplate, das Zugriff auf ein Formatierungsargument für benutzerdefinierte Formatierer bereitstellt
(Klassentemplate)
erstellt ein typlöschtes Objekt, das auf alle Formatierungsargumente verweist und in format_args konvertierbar ist
(Funktionstemplate)