std::basic_format_parse_context
Определено в заголовочном файле <format>
|
||
template< class CharT > class basic_format_parse_context; |
(начиная с C++20) | |
Предоставляет доступ к состоянию анализа строки формата, состоящему из анализируемого диапазона строки формата и счётчика аргументов для автоматического индексирования.
Экземпляр std::basic_format_parse_context
передаётся в Formatter при анализе спецификации формата.
Предусмотрено несколько определений типов для распространённых типов символов:
Определены в заголовочном файле
<format> | |
Тип | Определение |
std::format_parse_context
|
std::basic_format_parse_context<char> |
std::wformat_parse_context
|
std::basic_format_parse_context<wchar_t> |
[править] Типы элементы
Тип | Определение |
char_type
|
CharT
|
iterator
|
std::basic_string_view<CharT>::const_iterator |
const_iterator
|
std::basic_string_view<CharT>::const_iterator |
[править] Функции-элементы
(конструктор) |
создаёт экземпляр std::basic_format_parse_context из строки формата и количества аргументов (public функция-элемент) |
operator= [удалено] |
std::basic_format_parse_context не копируется (public функция-элемент) |
begin |
возвращает итератор на начало диапазона строки формата (public функция-элемент) |
end |
возвращает итератор на конец диапазона строки формата (public функция-элемент) |
advance_to |
перемещает начальный итератор на заданную позицию (public функция-элемент) |
next_arg_id |
переходит в режим автоматического индексирования и возвращает индекс следующего аргумента (public функция-элемент) |
check_arg_id |
переходит в режим ручной индексации, проверяет, находится ли указанный индекс аргумента в диапазоне (public функция-элемент) |
std::basic_format_parse_context::basic_format_parse_context
constexpr explicit basic_format_parse_context( std::basic_string_view<CharT> fmt, std::size_t num_args = 0 ) noexcept; |
(1) | |
basic_format_parse_context( const basic_format_parse_context& ) = delete; |
(2) | |
std::basic_format_parse_context
. Инициализирует диапазон строк формата в [
fmt.begin(),
fmt.end())
и счётчик аргументов в num_args.std::basic_format_parse_context
нельзя копировать.
std::basic_format_parse_context::begin
constexpr const_iterator begin() const noexcept; |
||
Возвращает итератор на начала диапазона строки формата.
std::basic_format_parse_context::end
constexpr const_iterator end() const noexcept; |
||
Возвращает итератор на конец диапазона строки формата.
std::basic_format_parse_context::advance_to
constexpr void advance_to( const_iterator it ); |
||
Устанавливает начало диапазона строки формата в it. После вызова advance_to()
последующие вызовы begin()
вернут копию it.
Поведение не определено, если end() недостижим из it.
std::basic_format_parse_context::next_arg_id
constexpr std::size_t next_arg_id(); |
||
Переходит в режим автоматического индексирования аргументов и возвращает индекс следующего аргумента, начиная с 0.
Если *this уже перешёл в режим индексации аргументов вручную, генерируется std::format_error.
Если индекс следующего аргумента больше или равен значению num_args, указанному в конструкторе, вызов не является базовым константным выражением.
std::basic_format_parse_context::check_arg_id
constexpr void check_arg_id( std::size_t id ); |
||
Входит в режим индексации аргументов вручную.
Если *this уже перешёл в режим автоматической индексации аргументов, генерируется std::format_error.
Если id больше или равно num_args, указанному в конструкторе, вызов не является базовым константным выражением.
[править] Пример
Этот раздел не завершён Причина: нет примера |
[править] Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
Номер | Применён | Поведение в стандарте | Корректное поведение |
---|---|---|---|
LWG 3825 | C++20 | check_arg_id имеет проверку аргумента id времени компиляции,но next_arg_id не имеет
|
добавлено |