std::basic_format_parse_context
Defined in header <format>
|
||
template< class CharT > class basic_format_parse_context; |
(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.
A program that declares an explicit or partial specialization of std::basic_format_parse_context
is ill-formed, no diagnostic required.
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> |
[edit] Member types
Type | Definition |
char_type
|
CharT
|
iterator
|
std::basic_string_view<CharT>::const_iterator |
const_iterator
|
std::basic_string_view<CharT>::const_iterator |
[edit] 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) | ||
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
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
constexpr const_iterator begin() const noexcept; |
||
Returns an iterator to the beginning of the format string range.
std::basic_format_parse_context::end
constexpr const_iterator end() const noexcept; |
||
Returns an iterator to the end of the format string range.
std::basic_format_parse_context::advance_to
constexpr void advance_to( const_iterator it ); |
||
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
constexpr std::size_t 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
constexpr void check_arg_id( std::size_t 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
template< class... Ts > constexpr void check_dynamic_spec( std::size_t id ) noexcept; |
(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.
The program is ill-formed unless sizeof...(Ts) >= 1, the types in Ts... are unique, and each type is one of 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>, or const void*.
std::basic_format_parse_context::check_dynamic_spec_integral
constexpr void check_dynamic_spec_integral( std::size_t id ) noexcept; |
(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
constexpr void check_dynamic_spec_string( std::size_t id ) noexcept; |
(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.
[edit] Example
This section is incomplete Reason: no example |
[edit] 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 |
LWG 3975 | C++20 | user specialization of basic_format_parse_context was allowed
|
disallowed |