Spec-Zone.ru › C++

std::formatter<range>

Определено в заголовке <format>
template< ranges::input_range R, class CharT >
    requires (std::format_kind<R> != std::range_format::disabled) &&
              std::formattable<ranges::range_reference_t<R>, CharT>
struct formatter<R, CharT>;
(с C++23)
Вспомогательные шаблоны
template< std::range_format K, ranges::input_range R, class CharT >
struct range-default-formatter;
(только для иллюстрации*)

Шаблонная специализация std::formatter для типов диапазонов позволяет пользователям преобразовывать диапазон в его текстовое представление как набор элементов или строку, используя функции форматирования.

Специализация наследуется от range-default-formatter<std::format_kind<R>, R, CharT>.

Специализация включена, если R удовлетворяет input_range, std::format_kind<R> не является std::range_format::disabled, и std::formattable<ranges::range_reference_t<R>, CharT> является true.

Спецификация формата

Синтаксис range-format-spec:

range-fill-and-align (необязательно) ширина (необязательно) n(необязательно) тип-диапазона (необязательно) range-underlying-spec (необязательно)

Синтаксис подробно описан в спецификации формата диапазона.

Для специализаций std::formatter где std::format_kind<R> является либо std::range_format::string или std::range_format::debug_string, format-spec является std-format-spec, а не range-format-spec (который использует std::formatter<std::basic_string<CharT>, CharT> в качестве базового форматировщика).

Специализации range-default-formatter

range-default-formatter<std::range_format::sequence>
(C++23)
утилита форматирования для диапазонов в виде последовательности
(специализация шаблона класса)
range-default-formatter<std::range_format::map>
(C++23)
утилита форматирования для диапазонов в виде словаря
(специализация шаблона класса)
range-default-formatter<std::range_format::set>
(C++23)
утилита форматирования для диапазонов в виде множества
(специализация шаблона класса)
range-default-formatter<std::range_format::string>range-default-formatter<std::range_format::debug_string>
(C++23)
утилита форматирования для диапазонов в виде строки или эскейп-строки
(специализация шаблона класса)

Пример

См. также

formatter
(C++20)
определяет правила форматирования для заданного типа
(шаблон класса)
range_formatter
(C++23)
шаблон класса, который помогает в реализации специализаций std::formatter для типов диапазонов
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/format/ranges_formatter

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API