On this page
std::basic_format_parse_context
Defined in header <format> |
||
---|---|---|
|
(since C++20) |
Provides access to the format string parsing state consisting of the format string range being parsed and the argument counter for automatic indexing.
A std::basic_format_parse_context
instance is passed to Formatter when parsing the format specification.
Several typedefs for common character types are provided:
Defined in header <format> |
|
---|---|
Type | Definition |
std::format_parse_context |
std::basic_format_parse_context<char> |
std::wformat_parse_context |
std::basic_format_parse_context<wchar_t> |
Member types
Type | Definition |
---|---|
char_type |
CharT |
iterator |
std::basic_string_view<CharT>::const_iterator |
const_iterator |
std::basic_string_view<CharT>::const_iterator |
Member functions
(constructor)
|
constructs a std::basic_format_parse_context instance from format string and argument count (public member function) |
operator=
[deleted]
|
std::basic_format_parse_context is not copyable (public member function) |
begin
|
returns an iterator to the beginning of the format string range (public member function) |
end
|
returns an iterator to the end of the format string range (public member function) |
advance_to
|
advances the begin iterator to the given position (public member function) |
next_arg_id
|
enters automatic indexing mode, and returns the next argument index (public member function) |
check_arg_id
|
enters manual indexing mode, checks if the given argument index is in range (public member function) |
check_dynamic_spec
(C++26)
|
checks if the type of the corresponding format argument with the given argument index is in the given type template arguments (public member function) |
check_dynamic_spec_integral
(C++26)
|
checks if the type of the corresponding format argument with the given argument index is an integral type (public member function) |
check_dynamic_spec_string
(C++26)
|
checks if the type of the corresponding format argument with the given argument index is a string type (public member function) |
std::basic_format_parse_context::basic_format_parse_context
(1) | ||
|
(until C++26) | |
|
(since C++26) | |
|
(2) |
std::basic_format_parse_context
instance. Initializes the format string range to [
fmt.begin()
,
fmt.end()
)
, and the argument count to num_args
(until C++26)0
(since C++26).
Any call to |
(since C++26) |
std::basic_format_parse_context
is not copyable.
std::basic_format_parse_context::begin
|
Returns an iterator to the beginning of the format string range.
std::basic_format_parse_context::end
|
Returns an iterator to the end of the format string range.
std::basic_format_parse_context::advance_to
|
Sets the beginning of the format string range to it
. After a call to advance_to()
, subsequent calls to begin()
will return a copy of it
.
The behavior is undefined if end()
is not reachable from it
.
std::basic_format_parse_context::next_arg_id
|
Enters automatic argument indexing mode, and returns the next argument index, starting from 0.
If *this
has already entered manual argument indexing mode, throws std::format_error
.
If the next argument index is larger than or equal to the num_args
provided in the constructor, the call is not a core constant expression.
std::basic_format_parse_context::check_arg_id
|
Enters manual argument indexing mode.
If *this
has already entered automatic argument indexing mode, throws std::format_error
.
If id
is larger than or equal to the num_args
provided in the constructor, the call is not a core constant expression.
std::basic_format_parse_context::check_dynamic_spec
|
(since C++26) |
If id
is larger than or equal to the num_args
provided in the constructor or the type of the corresponding format argument (after conversion to std::basic_format_arg
) is not one of the types in Ts...
, the call is not a core constant expression. A call to check_dynamic_spec
has no effect at runtime.
- This overload participates in overload resolution only if the types in
Ts...
are unique and each type is one ofbool
,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>
, orconst void*
.
std::basic_format_parse_context::check_dynamic_spec_integral
|
(since C++26) |
Equivalent to call check_dynamic_spec<int, unsigned int, long long int, unsigned long long int>(id)
. A call to check_dynamic_spec_integral
has no effect at runtime.
std::basic_format_parse_context::check_dynamic_spec_string
|
(since C++26) |
Equivalent to call check_dynamic_spec<const char_type*, std::basic_string_view<char_type>>(id)
. A call to check_dynamic_spec_string
has no effect at runtime.
Example
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 3825 | C++20 | check_arg_id has a compile-time argumentid check, but next_arg_id did not have |
added |
© 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