名前空間
変種
操作

std::basic_format_parse_context

From cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
ヘッダー <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,

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

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

(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 のコピーを返します。

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... の型が一意であり、各型が boolchar_typeintunsigned intlong long intunsigned long long intfloatdoublelong doubleconst 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 のユーザー定義特殊化が許可されていました。 不許可になった
English 日本語 中文(简体) 中文(繁體)