std:: enable_nonlocking_formatter_optimization
|
定义于头文件
<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
:
-
当模板参数类型
TimeZonePtr为 const std:: chrono :: time_zone * 时的 std::chrono::zoned_time
以下标准模板的所有特化对应的
enable_nonlocking_formatter_optimization
特化均被有条件地定义为
true
:
针对所有
可格式化范围类型
的
enable_nonlocking_formatter_optimization
特化,当范围格式化种类不是
std
::
range_format
::
disabled
时,始终定义为
false
。
注释
| 功能测试 宏 | 值 | 标准 | 功能 |
|---|---|---|---|
__cpp_lib_print
|
202403L
|
(C++26)
(DR23) |
带流锁定的格式化输出 |
202406L
|
(C++26)
(DR23) |
为更多可格式化类型启用非锁定格式化器优化 |
参见
|
(C++20)
|
为给定类型定义格式化规则
(类模板) |
|
(C++23)
|
使用参数的
格式化
表示形式打印到
stdout
或文件流
(函数模板) |
|
(C++23)
|
与
std::print
相同,但每次打印后都会附加换行符
(函数模板) |