Spec-Zone.ru › C++

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 из строки формата и счётчика аргументов
(публичная функция-член)
operator=
[удалено]
std::basic_format_parse_context не копируемый
(публичная функция-член)
begin
возвращает итератор к началу диапазона строки формата
(публичная функция-член)
end
возвращает итератор к концу диапазона строки формата
(публичная функция-член)
advance_to
перемещает итератор begin к заданной позиции
(публичная функция-член)
next_arg_id
переходит в режим автоматической индексации и возвращает следующий индекс аргумента
(публичная функция-член)
check_arg_id
переходит в режим ручного индексирования, проверяет, находится ли данный индекс аргумента в диапазоне
(публичная функция-член)
check_dynamic_spec
(C++26)
проверяет, находится ли тип соответствующего аргумента формата с заданным индексом аргумента в заданном шаблоне типов
(публичная функция-член)
check_dynamic_spec_integral
(C++26)
проверяет, является ли тип соответствующего аргумента формата с заданным индексом аргумента целочисленным типом
(публичная функция-член)
check_dynamic_spec_string
(C++26)
проверяет, является ли тип соответствующего аргумента формата с заданным индексом аргумента типом строки
(публичная функция-член)

std::basic_format_parse_context::basic_format_parse_context

(1)
constexpr explicit 
basic_format_parse_context( std::basic_string_view<CharT> fmt,
                            std::size_t num_args = 0 ) noexcept;
(до C++26)
constexpr explicit 
basic_format_parse_context( std::basic_string_view<CharT> fmt ) noexcept;
(с C++26)
basic_format_parse_context( const basic_format_parse_context& ) = delete;
(2)
1) Создаёт экземпляр std::basic_format_parse_context. Инициализирует диапазон строки формата [fmt.begin(), fmt.end()), а счётчик аргументов — num_args(до C++26)​0​(с C++26).

Любой вызов next_arg_id, check_arg_id, или check_dynamic_spec для экземпляра std::basic_format_parse_context, инициализированного с помощью этого конструктора, не является ядром константного выражения.

(с C++26)
2) Конструктор копирования удалён. 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, заданному в конструкторе, вызов не является ядром константного выражения.

std::basic_format_parse_context::check_dynamic_spec

template< class... Ts >
constexpr void check_dynamic_spec( std::size_t id ) noexcept;
(с C++26)

Если id больше или равен num_args, заданному в конструкторе, или тип соответствующего аргумента формата (после преобразования в std::basic_format_arg) не совпадает ни с одним из типов в Ts..., вызов не является ядром константного выражения. Вызов check_dynamic_spec не оказывает эффекта во время выполнения.

  • Этот перегруз участвует в разрешении перегрузки только если типы в Ts... уникальны и каждый тип является одним из bool, char_type, int, unsigned int, long long int, unsigned long long int, float, double, long double, const char_type*, std::basic_string_view<char_type>, или const void*.

std::basic_format_parse_context::check_dynamic_spec_integral

constexpr void check_dynamic_spec_integral( std::size_t id ) noexcept;
(с C++26)

Эквивалентно вызову check_dynamic_spec<int, unsigned int, long long int, unsigned long long int>(id). Вызов check_dynamic_spec_integral не оказывает эффекта во время выполнения.

END_OF_DOCUMENT_MARKER

std::basic_format_parse_context::check_dynamic_spec_string

constexpr void check_dynamic_spec_string( std::size_t id ) noexcept;
(с C++26)

Эквивалентно вызову check_dynamic_spec<const char_type*, std::basic_string_view<char_type>>(id). Вызов check_dynamic_spec_string не имеет эффекта во время выполнения.

Пример

Отчеты об ошибках

Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, как опубликовано Правильное поведение
LWG 3825 C++20 check_arg_id имеет аргумент на этапе компиляции
id проверка, но next_arg_id не имела
добавлено

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

Spec-Zone.ru

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