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
представляет любой cv-неквалифицированный арифметический тип, кроме
char
,
wchar_t
,
char8_t
,
char16_t
или
char32_t
:
|
Флаг неблокирующей оптимизации для форматтеров символов
|
||
|
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
за исключением того, что каждый вывод завершается дополнительным переводом строки
(шаблон функции) |