# std::basic_format_parse_context

From cppreference.com
< cpp‎ | utility‎ | format

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.

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)

## std::basic_format_parse_context::basic_format_parse_context

constexpr explicit basic_format_parse_context( std::basic_string_view<CharT> fmt, std::size_t num_args = 0 ) noexcept; | (1) |
basic_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.
2) The copy constructor is deleted. `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.

### Example

| This section is incomplete Reason: no 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 argument id check, but `next_arg_id` did not have | added

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/format/basic_format_parse_context&oldid=150126"