std::enable_nonlocking_formatter_optimization
來自 cppreference.com
| 定義於標頭檔案 <format> |
||
| template< class T > constexpr bool enable_nonlocking_formatter_optimization = false; |
(C++23 起) | |
此模板可用於實現 std::print 和 std::println 的高效實現。
如果 std::enable_nonlocking_formatter_optimization<T> 為 true,則可以以更高效的方式列印型別為 T 的引數(詳見 std::print)。在以下情況下,std::enable_nonlocking_formatter_optimization 的特化可以是 true
-
T是 std::formatter<T, CharT> 是 基本標準特化 或 庫型別的標準特化 的型別之一(見下文)。 - 程式可以為任何 cv-非限定 程式定義型別
T特化此模板。此類特化必須 可用於常量表達式 且型別為 const bool。
目錄 |
[編輯] 基本標準特化
在以下列表中,CharT 是 char 或 wchar_t,ArithmeticT 是除 char、wchar_t、char8_t、char16_t 或 char32_t 之外的任何 cv-非限定算術型別
| 字元格式化程式的非鎖定標誌 |
||
| template<> constexpr bool enable_nonlocking_formatter_optimization<CharT> = true; |
(1) | |
| 字串格式化程式的非鎖定標誌 |
||
| 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) | |
| 算術格式化程式的非鎖定標誌 |
||
| template<> constexpr bool enable_nonlocking_formatter_optimization<ArithmeticT> = true; |
(7) | |
| 指標格式化程式的非鎖定標誌 |
||
| 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) | |
[編輯] 庫型別的標準特化
對於以下所有標準模板的特化,enable_nonlocking_formatter_optimization 的特化被定義為 true
- std::chrono::zoned_time,當其模板引數型別
TimeZonePtr為 const std::chrono::time_zone*
對於以下所有標準模板的特化,enable_nonlocking_formatter_optimization 的特化被定義為有條件地 true
對於所有 可格式化範圍型別,enable_nonlocking_formatter_optimization 的特化始終被定義為 false,其範圍格式種類不是 std::range_format::disabled。
[編輯] 注意
| 特性測試宏 | 值 | 標準 | 特性 |
|---|---|---|---|
__cpp_lib_print |
202403L |
(C++26) (DR23) |
帶流鎖的格式化輸出 |
202406L |
(C++26) (DR23) |
為更多可格式化型別啟用非鎖定格式化程式最佳化 |
[編輯] 另請參閱
| (C++20) |
定義給定型別的格式化規則 (類模板) |
| (C++23) |
使用引數的格式化表示列印到 stdout 或檔案流 (函式模板) |
| (C++23) |
與 std::print 相同,但每次列印都以額外的換行符終止 (函式模板) |