Namespaces
Variants

std:: basic_format_parse_context

From cppreference.net
Défini dans l'en-tête <format>
template < class CharT >
class basic_format_parse_context ;
(depuis C++20)

Fournit l'accès à l'état d'analyse de la chaîne de format constitué de la plage de la chaîne de format en cours d'analyse et du compteur d'arguments pour l'indexation automatique.

Une instance de std::basic_format_parse_context est passée au Formatter lors de l'analyse de la spécification de format.

Un programme qui déclare une spécialisation explicite ou partielle de std::basic_format_parse_context est non conforme, aucun diagnostic requis.

Plusieurs typedefs pour les types de caractères courants sont fournis :

Défini dans l'en-tête <format>
Type Définition
std::format_parse_context std :: basic_format_parse_context < char >
std::wformat_parse_context std :: basic_format_parse_context < wchar_t >

Table des matières

Types membres

Type Définition
char_type CharT
iterator std:: basic_string_view < CharT > :: const_iterator
const_iterator std:: basic_string_view < CharT > :: const_iterator

Fonctions membres

(constructeur)
construit une instance de std::basic_format_parse_context à partir d'une chaîne de format et d'un nombre d'arguments
(fonction membre publique)
operator=
[supprimé]
std::basic_format_parse_context n'est pas copiable
(fonction membre publique)
begin
retourne un itérateur vers le début de la plage de la chaîne de format
(fonction membre publique)
end
retourne un itérateur vers la fin de la plage de la chaîne de format
(fonction membre publique)
advance_to
avance l'itérateur de début vers la position donnée
(fonction membre publique)
next_arg_id
entre en mode d'indexation automatique et retourne l'index d'argument suivant
(fonction membre publique)
check_arg_id
entre en mode d'indexation manuelle, vérifie si l'index d'argument donné est dans la plage
(fonction membre publique)
check_dynamic_spec
(C++26)
vérifie si le type de l'argument de format correspondant avec l'index d'argument donné est dans les arguments de template de type donnés
(fonction membre publique)
check_dynamic_spec_integral
(C++26)
vérifie si le type de l'argument de format correspondant avec l'index d'argument donné est un type intégral
(fonction membre publique)
check_dynamic_spec_string
(C++26)
vérifie si le type de l'argument de format correspondant avec l'index d'argument donné est un type chaîne
(fonction membre publique)

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 ;
(until C++26)
constexpr explicit
basic_format_parse_context ( std:: basic_string_view < CharT > fmt ) noexcept ;
(since C++26)
basic_format_parse_context ( const basic_format_parse_context & ) = delete ;
(2)
1) Construit une instance de std::basic_format_parse_context . Initialise la plage de la chaîne de format à [ fmt. begin ( ) , fmt. end ( ) ) , et le nombre d'arguments à num_args (until C++26) 0 (since C++26) .

Tout appel à next_arg_id , check_arg_id , ou check_dynamic_spec sur une instance de std::basic_format_parse_context initialisée en utilisant ce constructeur n'est pas une expression constante de base.

(since C++26)
2) Le constructeur de copie est supprimé. std::basic_format_parse_context n'est pas copiable.

std::basic_format_parse_context:: begin

constexpr const_iterator begin ( ) const noexcept ;

Retourne un itérateur vers le début de la plage de la chaîne de format.

std::basic_format_parse_context:: end

constexpr const_iterator end ( ) const noexcept ;

Retourne un itérateur vers la fin de la plage de la chaîne de format.

std::basic_format_parse_context:: advance_to

constexpr void advance_to ( const_iterator it ) ;

Définit le début de la plage de la chaîne de format à it . Après un appel à advance_to() , les appels ultérieurs à begin() renverront une copie de it .

Le comportement est indéfini si end ( ) n'est pas accessible depuis it .

std::basic_format_parse_context:: next_arg_id

constexpr std:: size_t next_arg_id ( ) ;

Active le mode d'indexation automatique des arguments et retourne l'index d'argument suivant, en commençant à partir de 0.

Si * this a déjà activé le mode d'indexation manuelle des arguments, lance std::format_error .

Si l'index d'argument suivant est supérieur ou égal au num_args fourni dans le constructeur, l'appel n'est pas une expression constante de base.

std::basic_format_parse_context:: check_arg_id

constexpr void check_arg_id ( std:: size_t id ) ;

Active le mode d'indexation manuelle des arguments.

Si * this a déjà activé le mode d'indexation automatique des arguments, lève std::format_error .

Si id est supérieur ou égal à num_args fourni dans le constructeur, l'appel n'est pas une expression constante de base.

std::basic_format_parse_context:: check_dynamic_spec

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

Si id est supérieur ou égal au num_args fourni dans le constructeur ou si le type de l'argument de format correspondant (après conversion en std::basic_format_arg ) ne fait pas partie des types dans Ts... , l'appel n'est pas une expression constante de base. Un appel à check_dynamic_spec n'a aucun effet à l'exécution.

Le programme est mal formé sauf si sizeof... ( Ts ) >= 1 , les types dans Ts... sont uniques, et chaque type est l'un de 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 > , ou const void * .

std::basic_format_parse_context:: check_dynamic_spec_integral

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

Équivalent à l'appel de check_dynamic_spec < int , unsigned int , long long int , unsigned long long int > ( id ) . Un appel à check_dynamic_spec_integral n'a aucun effet à l'exécution.

std::basic_format_parse_context:: check_dynamic_spec_string

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

Équivalent à l'appel check_dynamic_spec < const char_type * , std:: basic_string_view < char_type >> ( id ) . Un appel à check_dynamic_spec_string n'a aucun effet à l'exécution.

Exemple

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 3825 C++20 check_arg_id avait une vérification d'argument
id à la compilation, mais next_arg_id ne l'avait pas
ajoutée
LWG 3975 C++20 la spécialisation utilisateur de basic_format_parse_context était autorisée interdite