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 |
[編集] メンバ関数
| (コンストラクタ) |
フォーマット文字列と引数数から std::basic_format_parse_context インスタンスを構築します(public member function) |
| operator= [削除] |
std::basic_format_parse_context はコピーできません(public member function) |
| begin |
フォーマット文字列範囲の先頭へのイテレータを返します (public member function) |
| end |
フォーマット文字列範囲の末尾へのイテレータを返します (public member function) |
| advance_to |
beginイテレータを指定された位置に進めます (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, |
(C++26まで) | |
| constexpr explicit basic_format_parse_context( std::basic_string_view<CharT> fmt ) noexcept; |
(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 のコピーを返します。
it から end() が到達可能でない場合、動作は未定義です。
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; |
(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 | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 3825 | C++20 | check_arg_id はコンパイル時引数チェックがありますが、next_arg_id はありませんでした。id チェックがありますが、 next_arg_id はありませんでした。 |
追加された |
| LWG 3975 | C++20 | basic_format_parse_context のユーザー定義特殊化が許可されていました。 |
不許可になった |