std:: basic_format_parse_context
|
Определено в заголовочном файле
<format>
|
||
|
template
<
class
CharT
>
class basic_format_parse_context ; |
(начиная с C++20) | |
Предоставляет доступ к состоянию парсинга строки формата, состоящему из диапазона строки формата, который парсится, и счетчика аргументов для автоматической индексации.
Экземпляр
std::basic_format_parse_context
передается в
Formatter
при разборе спецификации формата.
Программа, которая объявляет явную или частичную специализацию
std::basic_format_parse_context
, является некорректной, диагностика не требуется.
Предоставлены несколько typedef-определений для распространённых символьных типов:
|
Определено в заголовке
<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 |
Функции-члены
|
(constructor)
|
создает экземпляр
std::basic_format_parse_context
из строки формата и количества аргументов
(public member function) |
|
operator=
[deleted]
|
std::basic_format_parse_context
не копируется
(public member function) |
|
begin
|
возвращает итератор на начало диапазона строки формата
(public member function) |
|
end
|
возвращает итератор на конец диапазона строки формата
(public member function) |
|
advance_to
|
перемещает начальный итератор в заданную позицию
(public member function) |
|
next_arg_id
|
переходит в режим автоматической индексации и возвращает следующий индекс аргумента
(public member function) |
|
check_arg_id
|
переходит в режим ручной индексации, проверяет, находится ли заданный индекс аргумента в допустимом диапазоне
(public member function) |
|
check_dynamic_spec
(C++26)
|
проверяет, находится ли тип соответствующего аргумента формата с заданным индексом среди заданных шаблонных аргументов типов
(public member function) |
|
check_dynamic_spec_integral
(C++26)
|
проверяет, является ли тип соответствующего аргумента формата с заданным индексом целочисленным типом
(public member function) |
|
check_dynamic_spec_string
(C++26)
|
проверяет, является ли тип соответствующего аргумента формата с заданным индексом строковым типом
(public member function) |
std::basic_format_parse_context:: basic_format_parse_context
| (1) | ||
|
constexpr
explicit
basic_format_parse_context
(
std::
basic_string_view
<
CharT
>
fmt,
|
(until C++26) | |
|
constexpr
explicit
basic_format_parse_context ( std:: basic_string_view < CharT > fmt ) noexcept ; |
(since C++26) | |
|
basic_format_parse_context
(
const
basic_format_parse_context
&
)
=
delete
;
|
(2) | |
std::basic_format_parse_context
. Инициализирует диапазон строки формата как
[
fmt.
begin
(
)
,
fmt.
end
(
)
)
, и количество аргументов как
num_args
(до C++26)
0
(начиная с C++26)
.
|
Любой вызов
|
(начиная с C++26) |
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 ; |
(since C++26) | |
Если id больше или равно num_args , предоставленному в конструкторе, или тип соответствующего аргумента форматирования (после преобразования в std::basic_format_arg ) не является одним из типов в Ts... , вызов не является константным выражением ядра. Вызов check_dynamic_spec не имеет эффекта во время выполнения.
Программа является некорректной, если sizeof... ( Ts ) >= 1 , типы в 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 не оказывает эффекта во время выполнения.
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 | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3825 | C++20 |
check_arg_id
имеет проверку аргумента
id во время компиляции, но
next_arg_id
не имел
|
добавлено |
| LWG 3975 | C++20 |
пользовательская специализация
basic_format_parse_context
была разрешена
|
запрещено |