Namespaces
Variants

std:: basic_format_parse_context

From cppreference.net
Definiert im Header <format>
template < class CharT >
class basic_format_parse_context ;
(seit C++20)

Bietet Zugriff auf den Analysezustand der Formatzeichenkette, der aus dem analysierten Bereich der Formatzeichenkette und dem Argumentzähler für automatische Indizierung besteht.

Eine std::basic_format_parse_context Instanz wird an Formatter übergeben, wenn die Formatspezifikation geparst wird.

Ein Programm, das eine explizite oder partielle Spezialisierung von std::basic_format_parse_context deklariert, ist fehlerhaft, keine Diagnose erforderlich.

Es werden mehrere Typdefinitionen für gängige Zeichentypen bereitgestellt:

Definiert im Header <format>
Typ Definition
std::format_parse_context std :: basic_format_parse_context < char >
std::wformat_parse_context std :: basic_format_parse_context < wchar_t >

Inhaltsverzeichnis

Mitgliedertypen

Typ Definition
char_type CharT
iterator std:: basic_string_view < CharT > :: const_iterator
const_iterator std:: basic_string_view < CharT > :: const_iterator

Memberfunktionen

(Konstruktor)
konstruiert eine std::basic_format_parse_context Instanz aus Formatzeichenkette und Argumentanzahl
(öffentliche Elementfunktion)
operator=
[gelöscht]
std::basic_format_parse_context ist nicht kopierbar
(öffentliche Elementfunktion)
begin
gibt einen Iterator zum Anfang des Formatzeichenkettenbereichs zurück
(öffentliche Elementfunktion)
end
gibt einen Iterator zum Ende des Formatzeichenkettenbereichs zurück
(öffentliche Elementfunktion)
advance_to
bewegt den Beginn-Iterator zur gegebenen Position
(öffentliche Elementfunktion)
next_arg_id
wechselt in den automatischen Indexierungsmodus und gibt den nächsten Argumentindex zurück
(öffentliche Elementfunktion)
check_arg_id
wechselt in den manuellen Indexierungsmodus, prüft ob der gegebene Argumentindex im gültigen Bereich liegt
(öffentliche Elementfunktion)
check_dynamic_spec
(C++26)
prüft ob der Typ des entsprechenden Formatarguments mit dem gegebenen Argumentindex in den gegebenen Typ-Template-Argumenten enthalten ist
(öffentliche Elementfunktion)
check_dynamic_spec_integral
(C++26)
prüft ob der Typ des entsprechenden Formatarguments mit dem gegebenen Argumentindex ein integraler Typ ist
(öffentliche Elementfunktion)
check_dynamic_spec_string
(C++26)
prüft ob der Typ des entsprechenden Formatarguments mit dem gegebenen Argumentindex ein Zeichenkettentyp ist
(öffentliche Elementfunktion)

std::basic_format_parse_context:: basic_format_parse_context

(1)
constexpr explicit

basic_format_parse_context ( std:: basic_string_view < CharT > fmt,

std:: size_t num_args = 0 ) noexcept ;
(bis C++26)
constexpr explicit
basic_format_parse_context ( std:: basic_string_view < CharT > fmt ) noexcept ;
(seit C++26)
basic_format_parse_context ( const basic_format_parse_context & ) = delete ;
(2)
1) Konstruiert eine std::basic_format_parse_context -Instanz. Initialisiert den Format-String-Bereich auf [ fmt. begin ( ) , fmt. end ( ) ) und die Argumentanzahl auf num_args (bis C++26) 0 (seit C++26) .

Jeder Aufruf von next_arg_id , check_arg_id oder check_dynamic_spec auf einer Instanz von std::basic_format_parse_context , die mit diesem Konstruktor initialisiert wurde, ist kein Core Constant Expression.

(seit C++26)
2) Der Kopierkonstruktor ist gelöscht. std::basic_format_parse_context ist nicht kopierbar.

std::basic_format_parse_context:: begin

constexpr const_iterator begin ( ) const noexcept ;

Gibt einen Iterator zum Anfang des Format-String-Bereichs zurück.

std::basic_format_parse_context:: end

constexpr const_iterator end ( ) const noexcept ;

Gibt einen Iterator zum Ende des Format-String-Bereichs zurück.

std::basic_format_parse_context:: advance_to

constexpr void advance_to ( const_iterator it ) ;

Setzt den Anfang des Format-String-Bereichs auf it . Nach einem Aufruf von advance_to() geben nachfolgende Aufrufe von begin() eine Kopie von it zurück.

Das Verhalten ist undefiniert, wenn end ( ) nicht erreichbar von it ist.

std::basic_format_parse_context:: next_arg_id

constexpr std:: size_t next_arg_id ( ) ;

Aktiviert den automatischen Argumentindexierungsmodus und gibt den nächsten Argumentindex zurück, beginnend bei 0.

Falls * this bereits in den manuellen Argumentindexierungsmodus gewechselt hat, wird std::format_error ausgelöst.

Wenn der nächste Argumentindex größer oder gleich dem im Konstruktor angegebenen num_args ist, ist der Aufruf kein Kernkonstanter Ausdruck.

std::basic_format_parse_context:: check_arg_id

constexpr void check_arg_id ( std:: size_t id ) ;

Aktiviert den manuellen Argumentindexierungsmodus.

Falls * this bereits den automatischen Argumentindexierungsmodus aktiviert hat, wird std::format_error ausgelöst.

Falls id größer oder gleich dem im Konstruktor bereitgestellten num_args ist, ist der Aufruf kein Kern-Konstantenausdruck.

std::basic_format_parse_context:: check_dynamic_spec

template < class ... Ts >
constexpr void check_dynamic_spec ( std:: size_t id ) noexcept ;
(seit C++26)

Wenn id größer oder gleich dem im Konstruktor bereitgestellten num_args ist oder der Typ des entsprechenden Formatarguments (nach Konvertierung in std::basic_format_arg ) nicht einer der Typen in Ts... ist, ist der Aufruf kein Kern-Konstantenausdruck. Ein Aufruf von check_dynamic_spec hat zur Laufzeit keine Auswirkung.

Das Programm ist fehlerhaft, es sei denn sizeof... ( Ts ) >= 1 , die Typen in Ts... sind eindeutig und jeder Typ ist einer von bool , char_type , int , unsigned int , long long int , unsigned long long int , float , double , long double , const char_type * , std:: basic_string_view < char_type > , oder const void * .

std::basic_format_parse_context:: check_dynamic_spec_integral

constexpr void check_dynamic_spec_integral ( std:: size_t id ) noexcept ;
(seit C++26)

Entspricht dem Aufruf von check_dynamic_spec < int , unsigned int , long long int , unsigned long long int > ( id ) . Ein Aufruf von check_dynamic_spec_integral hat keine Auswirkung zur Laufzeit.

std::basic_format_parse_context:: check_dynamic_spec_string

constexpr void check_dynamic_spec_string ( std:: size_t id ) noexcept ;
(seit C++26)

Entspricht dem Aufruf von check_dynamic_spec < const char_type * , std:: basic_string_view < char_type >> ( id ) . Ein Aufruf von check_dynamic_spec_string hat keine Auswirkung zur Laufzeit.

Beispiel

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3825 C++20 check_arg_id hatte eine Compile-Time-Argument-
id Prüfung, aber next_arg_id hatte diese nicht
hinzugefügt
LWG 3975 C++20 Benutzer-Spezialisierung von basic_format_parse_context war erlaubt nicht erlaubt