Namespaces
Variants

std:: basic_format_parse_context

From cppreference.net
定義済みヘッダー <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

メンバー関数

(constructor)
フォーマット文字列と引数カウントから std::basic_format_parse_context インスタンスを構築する
(public member function)
operator=
[deleted]
std::basic_format_parse_context はコピー不可
(public member function)
begin
フォーマット文字列範囲の先頭へのイテレータを返す
(public member function)
end
フォーマット文字列範囲の終端へのイテレータを返す
(public member function)
advance_to
開始イテレータを指定された位置まで進める
(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,

std:: size_t num_args = 0 ) noexcept ;
(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)
1) std::basic_format_parse_context インスタンスを構築します。フォーマット文字列の範囲を [ fmt. begin ( ) , fmt. end ( ) ) に初期化し、引数の数を num_args (until C++26) 0 (since C++26) に初期化します。

このコンストラクタを使用して初期化された std::basic_format_parse_context インスタンスでの next_arg_id check_arg_id 、または check_dynamic_spec の呼び出しは、コア定数式ではありません。

(since C++26)
2) コピーコンストラクタは削除されています。 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 のコピーを返します。

end ( ) it から 到達可能 でない場合、動作は未定義です。

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 はコンパイル時引数
id チェックを持つが、 next_arg_id は持っていなかった
追加された
LWG 3975 C++20 basic_format_parse_context のユーザー特殊化が許可されていた 許可されなくなった