template< class CharT >
class basic_format_parse_context;
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:
Type Definitionstd::format_parse_context
std::basic_format_parse_context<char> std::wformat_parse_context
std::basic_format_parse_context<wchar_t> [edit] Member types [edit] Member functions constructs a std::basic_format_parse_context
instance from format string and argument count
std::basic_format_parse_context
is not copyable
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 argumentscheck_dynamic_spec_integral
(C++26)
checks if the type of the corresponding format argument with the given argument index is an integral typecheck_dynamic_spec_string
(C++26)
checks if the type of the corresponding format argument with the given argument index is a string typebasic_format_parse_context( const basic_format_parse_context& ) = delete;
(2) 1)Constructs a
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 next_arg_id
, check_arg_id
, or check_dynamic_spec
on an instance of std::basic_format_parse_context
initialized using this constructor is not a core constant expression.
2) The copy constructor is deleted. std::basic_format_parse_context
is not copyable.
constexpr const_iterator begin() const noexcept;
Returns an iterator to the beginning of the format string range.
std::basic_format_parse_context::endconstexpr const_iterator end() const noexcept;
Returns an iterator to the end of the format string range.
std::basic_format_parse_context::advance_toconstexpr 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_idEnters 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_idEnters 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 >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 [edit] Defect reportsThe following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior LWG 3825 C++20check_arg_id
has a compile-time argument
next_arg_id
did not have added LWG 3975 C++20 user specialization of basic_format_parse_context
was allowed disallowed
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4