名前空間
変種
操作

std::basic_format_arg<Context>::handle

From cppreference.com
 
 
 
 
ヘッダー <format> で定義
template< class Context >
class basic_format_arg<Context>::handle;
(C++20以降)

ユーザー定義型のオブジェクトのフォーマットを可能にする、型消去されたラッパー。

handle オブジェクトは通常、std::make_format_args によって作成され、std::visit_format_arg または std::basic_format_argvisit メンバ関数からアクセスされます(C++26以降)。

目次

[編集] データメンバ

handle の典型的な実装は TriviallyCopyable であり、2つの非静的データメンバのみを格納します。

  • フォーマットされるオブジェクトへの const void* ポインタ、および
  • format メンバ関数で必要な操作を実行する関数への void (*)(std::basic_format_parse_context<Context::char_type>&, Context&, const void*) 関数ポインタ(後述)。

[編集] メンバ関数

format
(C++20)
参照されているオブジェクトを指定されたコンテキストでフォーマットします。
(public member function)

std::basic_format_arg<Context>::handle::format

void format( std::basic_format_parse_context<Context::char_type>& parse_ctx,
             Context& format_ctx ) const;
(C++20以降)

以下とする:

  • フォーマット引数の型を T とします。
  • TDstd::remove_const_t<T> とします。
  • TQ は、const TD__formattable_with<Context> を満たす場合は const TD、そうでない場合は TD とします。
  • ref はフォーマット引数への参照とします。

等価な処理: typename Context::template formatter_type<TD> f;
parse_ctx.advance_to(f.parse(parse_ctx));
format_ctx.advance_to(f.format(const_cast<TQ&>(static_cast<const TD&>(ref)), format_ctx));

[編集] 注釈

handle はフォーマットされる引数に対して参照セマンティクスを持ち、そのライフタイムを延長しません。引数が handle よりも長く生存することを保証するのはプログラマの責任です。通常、handle はフォーマット関数内でのみ使用されます。

[編集] 関連項目

ユーザー定義フォーマッタのためにフォーマット引数へのアクセスを提供するクラステンプレート
(クラステンプレート) [編集]
format_args に変換可能な、すべてのフォーマット引数を参照する型消去されたオブジェクトを作成する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)