std:: enable_nonlocking_formatter_optimization
|
Défini dans l'en-tête
<format>
|
||
|
template
<
class
T
>
constexpr bool enable_nonlocking_formatter_optimization = false ; |
(depuis C++23) | |
Ce modèle peut être utilisé par les implémentations pour permettre des implémentations efficaces de std::print et std::println .
Si
std::enable_nonlocking_formatter_optimization<T>
est
true
, l'affichage d'un argument de type
T
peut être réalisé de manière plus efficace (voir
std::print
pour plus de détails).
Les spécialisations de
std::enable_nonlocking_formatter_optimization
peuvent être
true
dans les cas suivants :
-
Test l'un des types pour lesquels std::formatter < T, CharT > est une spécialisation standard de base ou une spécialisation standard pour un type de bibliothèque (voir ci-dessous). -
Un programme peut spécialiser ce modèle pour tout
type défini par le programme
non qualifié cv
T. Ces spécialisations doivent être utilisables dans des expressions constantes et avoir le type const bool .
Table des matières |
Spécialisations standard de base
Dans la liste suivante,
CharT
est soit
char
soit
wchar_t
,
ArithmeticT
est tout type arithmétique non qualifié cv autre que
char
,
wchar_t
,
char8_t
,
char16_t
, ou
char32_t
:
|
Drapeau de non-verrouillage pour les formateurs de caractères
|
||
|
template
<>
constexpr bool enable_nonlocking_formatter_optimization < CharT > = true ; |
(1) | |
|
Drapeau de non-verrouillage pour les formateurs de chaînes
|
||
|
template
<>
constexpr bool enable_nonlocking_formatter_optimization < CharT * > = true ; |
(2) | |
|
template
<>
constexpr bool enable_nonlocking_formatter_optimization < const CharT * > = true ; |
(3) | |
|
template
<
std::
size_t
N
>
constexpr bool enable_nonlocking_formatter_optimization < CharT [ N ] > = true ; |
(4) | |
|
template
<
class
Traits,
class
Alloc
>
constexpr
bool
enable_nonlocking_formatter_optimization
|
(5) | |
|
template
<
class
Traits
>
constexpr
bool
enable_nonlocking_formatter_optimization
|
(6) | |
|
Drapeau de non-verrouillage pour les formateurs arithmétiques
|
||
|
template
<>
constexpr bool enable_nonlocking_formatter_optimization < ArithmeticT > = true ; |
(7) | |
|
Drapeau de non-verrouillage pour les formateurs de pointeurs
|
||
|
template
<>
constexpr bool enable_nonlocking_formatter_optimization < std:: nullptr_t > = true ; |
(8) | |
|
template
<>
constexpr bool enable_nonlocking_formatter_optimization < void * > = true ; |
(9) | |
|
template
<>
constexpr bool enable_nonlocking_formatter_optimization < const void * > = true ; |
(10) | |
Spécialisations standards pour les types de bibliothèque
Les spécialisations de
enable_nonlocking_formatter_optimization
pour toutes les spécialisations des modèles standards suivants sont définies comme
true
:
-
std::chrono::zoned_time
lorsque son paramètre de type template
TimeZonePtrest const std:: chrono :: time_zone *
Les spécialisations de
enable_nonlocking_formatter_optimization
pour toutes les spécialisations des modèles standards suivants sont définies comme conditionnellement
true
:
Spécialisation de
enable_nonlocking_formatter_optimization
pour tous les
types de plages formatables
est toujours définie comme
false
pour lesquels le type de formatage de plage n'est pas
std
::
range_format
::
disabled
.
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_print
|
202403L
|
(C++26)
(DR23) |
Sortie formatée avec verrouillage de flux |
202406L
|
(C++26)
(DR23) |
Activation de l'optimisation de formateur sans verrouillage pour plus de types formatables |
Voir aussi
|
(C++20)
|
définit les règles de formatage pour un type donné
(modèle de classe) |
|
(C++23)
|
imprime vers
stdout
ou un flux de fichier en utilisant la représentation
formatée
des arguments
(modèle de fonction) |
|
(C++23)
|
identique à
std::print
sauf que chaque impression est terminée par un saut de ligne supplémentaire
(modèle de fonction) |