std::basic_format_parse_context
| Definiert in Header <format> |
||
| template< class CharT > class basic_format_parse_context; |
(seit C++20) | |
Bietet Zugriff auf den Zustand des Format-String-Parsings, bestehend aus dem zu parsierenden Format-String-Bereich und dem Argument-Zähler für die automatische Indizierung.
Eine Instanz von std::basic_format_parse_context wird an Formatter übergeben, wenn die Format-Spezifikation geparst wird.
Ein Programm, das eine explizite oder partielle Spezialisierung von std::basic_format_parse_context deklariert, ist ill-formed, keine Diagnose erforderlich.
Mehrere Typedefs für gängige Zeichentypen werden bereitgestellt
| Definiert in 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> |
[edit] Member types
| Typ | Definition |
char_type
|
CharT
|
iterator
|
std::basic_string_view<CharT>::const_iterator |
const_iterator
|
std::basic_string_view<CharT>::const_iterator |
[edit] Member functions
| (Konstruktor) |
erstellt eine std::basic_format_parse_context Instanz aus Format-String und Argument-Anzahl(öffentliche Memberfunktion) |
| operator= [gelöscht] |
std::basic_format_parse_context ist nicht kopierbar(öffentliche Memberfunktion) |
| begin |
gibt einen Iterator zum Anfang des Format-String-Bereichs zurück (öffentliche Memberfunktion) |
| end |
gibt einen Iterator zum Ende des Format-String-Bereichs zurück (öffentliche Memberfunktion) |
| advance_to |
verschiebt den Begin-Iterator zur gegebenen Position (öffentliche Memberfunktion) |
| next_arg_id |
wechselt in den Modus der automatischen Indizierung und gibt den nächsten Argument-Index zurück (öffentliche Memberfunktion) |
| check_arg_id |
wechselt in den Modus der manuellen Indizierung, prüft, ob der gegebene Argument-Index im gültigen Bereich liegt (öffentliche Memberfunktion) |
| check_dynamic_spec (C++26) |
prüft, ob der Typ des entsprechenden Format-Arguments mit dem gegebenen Argument-Index zu den gegebenen Template-Argumenten von Typen gehört (öffentliche Memberfunktion) |
| check_dynamic_spec_integral (C++26) |
prüft, ob der Typ des entsprechenden Format-Arguments mit dem gegebenen Argument-Index ein integraler Typ ist (öffentliche Memberfunktion) |
| check_dynamic_spec_string (C++26) |
prüft, ob der Typ des entsprechenden Format-Arguments mit dem gegebenen Argument-Index ein String-Typ ist (öffentliche Memberfunktion) |
std::basic_format_parse_context::basic_format_parse_context
| (1) | ||
constexpr explicit basic_format_parse_context( std::basic_string_view<CharT> fmt, |
(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) | |
std::basic_format_parse_context Instanz. Initialisiert den Format-String-Bereich auf [fmt.begin(), fmt.end()) und die Argument-Anzahl auf num_args(bis C++26)0(seit C++26).|
Jeder Aufruf von |
(seit C++26) |
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 von it aus erreichbar ist.
std::basic_format_parse_context::next_arg_id
| constexpr std::size_t next_arg_id(); |
||
Wechselt in den automatischen Argument-Indizierungsmodus und gibt den nächsten Argument-Index zurück, beginnend bei 0.
Wenn *this bereits in den Modus der manuellen Argument-Indizierung gewechselt hat, wird std::format_error ausgelöst.
Wenn der nächste Argument-Index größer oder gleich der im Konstruktor angegebenen num_args ist, ist der Aufruf keine Kern-Konstante.
std::basic_format_parse_context::check_arg_id
| constexpr void check_arg_id( std::size_t id ); |
||
Wechselt in den Modus der manuellen Argument-Indizierung.
Wenn *this bereits in den Modus der automatischen Argument-Indizierung gewechselt hat, wird std::format_error ausgelöst.
Wenn id größer oder gleich der im Konstruktor angegebenen num_args ist, ist der Aufruf keine Kern-Konstante.
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 der im Konstruktor angegebenen num_args ist, oder der Typ des entsprechenden Format-Arguments (nach Umwandlung in std::basic_format_arg) nicht zu den Typen in Ts... gehört, ist der Aufruf keine Kern-Konstante. Ein Aufruf von check_dynamic_spec hat zur Laufzeit keine Auswirkung.
Das Programm ist ill-formed, es sei denn, sizeof...(Ts) >= 1, die Typen in Ts... sind eindeutig, und jeder Typ ist einer der folgenden: 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 zur Laufzeit keine Auswirkung.
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 zur Laufzeit keine Auswirkung.
[edit] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[edit] Defect reports
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 hat eine Compile-Zeit-Prüfung für Argumenteid, aber next_arg_id nicht |
hinzugefügt |
| LWG 3975 | C++20 | Benutzerdefinierte Spezialisierung von basic_format_parse_context war erlaubt |
disallowed |