std::enable_nonlocking_formatter_optimization
| Definiert in Header <format> |
||
| template< class T > constexpr bool enable_nonlocking_formatter_optimization = false; |
(seit C++23) | |
Diese Vorlage kann von Implementierungen verwendet werden, um effiziente Implementierungen von std::print und std::println zu ermöglichen.
Wenn std::enable_nonlocking_formatter_optimization<T> true ist, kann das Drucken eines Arguments des Typs T effizienter durchgeführt werden (siehe std::print für Details). std::enable_nonlocking_formatter_optimization Spezialisierungen können in den folgenden Fällen true sein:
-
Tist einer der Typen, für die std::formatter<T, CharT> eine grundlegende Standard-Spezialisierung oder eine Standard-Spezialisierung für einen Bibliothekstyp ist (siehe unten). - Ein Programm darf diese Vorlage für jeden cv-unqualifizierten programdefinierten Typ
Tspezialisieren. Solche Spezialisierungen müssen in konstanten Ausdrücken verwendbar sein und vom Typ const bool sein.
Inhalt |
[edit] Grundlegende Standard-Spezialisierungen
In der folgenden Liste ist CharT entweder char oder wchar_t, ArithmeticT ist jeder cv-unqualifizierte arithmetische Typ außer char, wchar_t, char8_t, char16_t oder char32_t.
| Nonlocking-Flag für Zeichenformatierer |
||
| template<> constexpr bool enable_nonlocking_formatter_optimization<CharT> = true; |
(1) | |
| Nonlocking-Flag für Zeichenkettenformatierer |
||
| 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) | |
| Nonlocking-Flag für arithmetische Formatierer |
||
| template<> constexpr bool enable_nonlocking_formatter_optimization<ArithmeticT> = true; |
(7) | |
| Nonlocking-Flag für Zeigerformatierer |
||
| 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) | |
[edit] Standard-Spezialisierungen für Bibliothekstypen
Spezialisierungen von enable_nonlocking_formatter_optimization für alle Spezialisierungen der folgenden Standardvorlagen sind als true definiert.
- std::chrono::zoned_time, wenn sein Vorlagenparameter-Typ
TimeZonePtrconst std::chrono::time_zone* ist.
Spezialisierungen von enable_nonlocking_formatter_optimization für alle Spezialisierungen der folgenden Standardvorlagen sind bedingt als true definiert.
Spezialisierung von enable_nonlocking_formatter_optimization für alle formattierbaren Bereichstypen sind immer als false definiert, für die die Bereichsformatart nicht std::range_format::disabled ist.
[edit] Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_print |
202403L |
(C++26) (DR23) |
Formatierte Ausgabe mit Stream-Locking |
202406L |
(C++26) (DR23) |
Aktivierung der Nonlocking-Formatter-Optimierung für weitere formattierbare Typen |
[edit] Siehe auch
| (C++20) |
definiert Formatierungsregeln für einen gegebenen Typ (Klassentemplate) |
| (C++23) |
druckt nach stdout oder einem Dateistream unter Verwendung der formatierten Darstellung der Argumente (Funktionstemplate) |
| (C++23) |
dasselbe wie std::print, außer dass jeder Druck durch eine zusätzliche neue Zeile beendet wird (Funktionstemplate) |