Scroll to navigation

std::enable_nonlocking_formatter_optimization(3) C++ Standard Libary std::enable_nonlocking_formatter_optimization(3)

NAME

std::enable_nonlocking_formatter_optimization - std::enable_nonlocking_formatter_optimization

Synopsis


Defined in header <format>
template< class T > (since C++23)
constexpr bool enable_nonlocking_formatter_optimization = false;


This template can be used by implementations to enable efficient implementations of
std::print and std::println.


If std::enable_nonlocking_formatter_optimization<T> is true, printing an argument of
type T can be performed in a more efficient way (see std::print for details).
std::enable_nonlocking_formatter_optimization specializations can be true in the
following cases:


* T is one of the types where std::format<T, CharT> is a basic standard
specialization (see below).
* A program may specialize this template for any cv-unqualified program-defined
type T. Such specializations must be usable in constant expressions and have
type const bool.


Basic standard specializations


In the following list, CharT is either char or wchar_t, ArithmeticT is any
cv-unqualified arithmetic type other than char, wchar_t, char8_t, char16_t, or
char32_t:


Nonlocking flag for character formatters
template<> (1)
inline constexpr bool enable_nonlocking_formatter_optimization<CharT> = true;
Nonlocking flag for string formatters
template<> (2)
inline constexpr bool enable_nonlocking_formatter_optimization<CharT*> = true;
template<>
inline constexpr bool enable_nonlocking_formatter_optimization<const CharT*> = (3)
true;
template< std::size_t N >
inline constexpr bool enable_nonlocking_formatter_optimization<CharT[N]> = (4)
true;
template< class Traits, class Alloc >


inline constexpr bool enable_nonlocking_formatter_optimization (5)


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


inline constexpr bool enable_nonlocking_formatter_optimization (6)


<std::basic_string_view<CharT, Traits>> = true;
Nonlocking flag for arithmetic formatters
template<>
inline constexpr bool enable_nonlocking_formatter_optimization<ArithmeticT> = (7)
true;
Nonlocking flag for pointer formatters
template<>
inline constexpr bool enable_nonlocking_formatter_optimization<std::nullptr_t> (8)
= true;
template<> (9)
inline constexpr bool enable_nonlocking_formatter_optimization<void*> = true;
template<>
inline constexpr bool enable_nonlocking_formatter_optimization<const void*> = (10)
true;

See also


formatter defines formatting rules for a given type
(C++20) (class template)
print prints to stdout or a file stream using formatted representation of the
(C++23) arguments
(function template)
println same as std::print except that each print is terminated by additional new
(C++23) line
(function template)

2024.06.10 http://cppreference.com