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<> inline constexpr bool enable_nonlocking_formatter_optimization<CharT> = true; |
(1) | |
字符串格式化器的无锁标志 |
||
template<> inline constexpr bool enable_nonlocking_formatter_optimization<CharT*> = true; |
(2) | |
template<> inline 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<> inline constexpr bool enable_nonlocking_formatter_optimization<ArithmeticT> = true; |
(7) | |
指针格式化器的无锁标志 |
||
template<> inline constexpr bool enable_nonlocking_formatter_optimization<std::nullptr_t> = true; |
(8) | |
template<> inline constexpr bool enable_nonlocking_formatter_optimization<void*> = true; |
(9) | |
template<> inline 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.
[edit] 注释
特性测试 宏 | 值 | Std | 特性 |
---|---|---|---|
__cpp_lib_print |
202403L | (C++26) (DR23) |
使用流锁定的格式化输出 |
202406L | (C++26) (DR23) |
为更多可格式化类型启用非锁定格式化程序优化 |
[edit] 参见
(C++20) |
为给定类型定义格式化规则 (类模板) |
(C++23) |
使用 格式化 的参数表示形式打印到 stdout 或文件流 (函数模板) |
(C++23) |
与 std::print 相同,只是每个打印都以额外的换行符结束 (函数模板) |