Namespaces
Variants

std:: enable_nonlocking_formatter_optimization

From cppreference.net
定义于头文件 <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

目录

基础标准特化

在以下列表中, 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

< std:: basic_string < CharT, Traits, Alloc >> = true ;
(5)
template < class Traits >

constexpr bool enable_nonlocking_formatter_optimization

< std:: basic_string_view < CharT, Traits >> = true ;
(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

以下标准模板的所有特化对应的 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 相同,但每次打印后都会附加换行符
(函数模板)