std::basic_format_context
Определён в заголовке <format> | ||
|---|---|---|
template< class OutputIt, class CharT > class basic_format_context; | (1) | (начиная с C++20) |
using format_context = basic_format_context</* unspecified */, char>; | (2) | (начиная с C++20) |
using wformat_context = basic_format_context</* unspecified */, wchar_t>; | (3) | (начиная с C++20) |
Предоставляет доступ к состоянию форматирования, состоящему из аргументов форматирования и выходного итератора.
std::string, например std::back_insert_iterator<std::string>. Реализации обычно используют итератор для буфера со стёртым типом, поддерживающего добавление элементов в любой непрерывный контейнер с изменяемым размером.std::wstring.Поведение не определено, если OutputIt не удовлетворяет требованиям std::output_iterator<const CharT&>.
Программа, объявляющая явную или частичную специализацию std::basic_format_context, некорректна; диагностика не требуется.
Объекты std::basic_format_context могут создаваться только реализацией. Пользовательский код может изменять контекст форматирования только через функцию format специализаций std::formatter.
Типы-члены
| Тип | Определение |
|---|---|
iterator |
OutputIt |
char_type |
CharT |
Шаблоны псевдонимов-членов
| Тип | Определение |
|---|---|
| formatter_type<T> | std::formatter<T,CharT> |
Функции-члены
|
конструктор
[удалён] |
basic_format_context не может быть создан пользовательским кодом (открытая функция-член) |
|
operator=
[удалён] |
basic_format_context не допускает присваивания (открытая функция-член) |
|
arg | возвращает аргумент с заданным индексом (открытая функция-член) |
|
locale | возвращает локаль, используемую для форматирования с учётом локали (открытая функция-член) |
|
out | возвращает итератор выходного буфера (открытая функция-член) |
|
advance_to | перемещает выходной итератор в заданную позицию (открытая функция-член) |
std::basic_format_context::arg
std::basic_format_arg<basic_format_context> arg( std::size_t id ) const; |
Возвращает std::basic_format_arg, содержащий аргумент с номером id в args, где args — это пакет параметров или объект std::basic_format_args, переданный функции форматирования.
Если id не меньше числа аргументов форматирования, возвращает std::basic_format_arg, созданный по умолчанию (содержащий объект std::monostate).
std::basic_format_context::locale
std::locale locale(); |
Возвращает локаль, переданную функции форматирования, или std::locale, созданную по умолчанию, если функция форматирования не принимает локаль.
std::basic_format_context::out
iterator out(); |
Возвращает итератор выходного буфера. Результат создаётся перемещающим конструктором из сохранённого итератора.
std::basic_format_context::advance_to
void advance_to( iterator it ); |
Присваивает it сохранённому выходному итератору с помощью перемещения. После вызова advance_to следующий вызов out() вернёт итератор со значением, которое it имел до присваивания.
Пример
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применён к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 3567 | C++20 |
basic_format_context не работает с типами итераторов, допускающими только перемещение | изменено для использования перемещающих итераторов |
| LWG 3975 | C++20 | пользовательская специализация basic_format_context была разрешена | запрещена |
| LWG 4061 | C++20 |
basic_format_context можно было создавать и присваивать с помощью пользовательского кода | создание и присваивание запрещены |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/format/basic_format_context