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
<tbody> </tbody> 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
<tbody> </tbody> constexpr const_iterator begin() const noexcept; |
||
Возвращает итератор на начала диапазона строки формата.
std::basic_format_parse_context::end
<tbody> </tbody> constexpr const_iterator end() const noexcept; |
||
Возвращает итератор на конец диапазона строки формата.
std::basic_format_parse_context::advance_to
<tbody> </tbody> constexpr void advance_to( const_iterator it ); |
||
Устанавливает начало диапазона строки формата в it. После вызова advance_to() последующие вызовы begin() вернут копию it.
Поведение не определено, если end() недостижим из it.
std::basic_format_parse_context::next_arg_id
<tbody> </tbody> constexpr std::size_t next_arg_id(); |
||
Переходит в режим автоматического индексирования аргументов и возвращает индекс следующего аргумента, начиная с 0.
Если *this уже перешёл в режим индексации аргументов вручную, генерируется std::format_error.
Если индекс следующего аргумента больше или равен значению num_args, указанному в конструкторе, вызов не является базовым константным выражением.
std::basic_format_parse_context::check_arg_id
<tbody> </tbody> 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 не имеет
|
добавлено |