std:: basic_format_parse_context
|
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 > |
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,
|
(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) | |
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 à
|
(since C++26) |
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
|
Cette section est incomplète
Raison : aucun 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 |