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 相同,但每次列印都以額外的換行符終止 (函式模板) |