namespace std {
template <class T>
constexpr bool enable_nonlocking_formatter_optimization = false; // (1) C++26
}
概要
std::print()
とstd::println()
の効率的な実装を有効にする。
この値がtrue
で定義される場合、文字列フォーマットされた文字列のストリームへの書き込み時に、余分な動的メモリ確保を行わない。
とくに指定されない限り、標準ライブラリでstd::formatter
の特殊化が定義される型に対して、各ヘッダは以下の特殊化を定義する:
template<>
inline constexpr bool enable_nonlocking_formatter_optimization<T> = true;
Rangeに対しては、以下が定義される:
template <ranges::input_range R>
requires (format_kind<R> != range_format::disabled)
inline constexpr bool enable_nonlocking_formatter_optimization<R> = false;
std::pair
およびstd::tuple
に対しては、以下が定義される:
template <class... Ts>
inline constexpr bool enable_nonlocking_formatter_optimization<pair-or-tuple<Ts...>> =
(enable_nonlocking_formatter_optimization<Ts> && ...);
備考
- ユーザーは、任意のCV修飾されないユーザー定義型でこの型の特殊化を定義できる
バージョン
言語
- C++26
処理系
- Clang: 18 ❌
- GCC: 14 ❌
- Visual C++: 2022 Update 7 ❌
関連項目
std::print()
std::chrono::duration
に対するenable_nonlocking_formatter_optimization
std::chrono::zoned_time
に対するenable_nonlocking_formatter_optimization