Namensräume
Varianten
Aktionen

std::basic_format_parse_context

Von cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
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>

Inhalt

[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,

                            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 Argument-Anzahl auf num_args(bis C++26)0(seit C++26).

Jeder Aufruf von next_arg_id, check_arg_id oder check_dynamic_spec für eine Instanz von std::basic_format_parse_context, die mit diesem Konstruktor initialisiert wurde, ist keine Kern-Konstante.

(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 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

[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 Argumente
id, aber next_arg_id nicht
hinzugefügt
LWG 3975 C++20 Benutzerdefinierte Spezialisierung von basic_format_parse_context war erlaubt disallowed