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 представляет любой 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

< 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 :

**Примечание:** В данном случае весь текст на странице состоит из C++ специфичных терминов (`std::pair`, `std::tuple`, `std::chrono::duration`) и HTML-тегов, которые согласно инструкциям не подлежат переводу. Поэтому перевод не требуется, исходный код остается без изменений.

Специализация 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 за исключением того, что каждый вывод завершается дополнительным переводом строки
(шаблон функции)