std::basic_format_arg<Context>::handle
From cppreference.com
< cpp | utility | format | basic format arg
| ヘッダー <format> で定義 |
||
| template< class Context > class basic_format_arg<Context>::handle; |
(C++20以降) | |
ユーザー定義型のオブジェクトのフォーマットを可能にする、型消去されたラッパー。
handle オブジェクトは通常、std::make_format_args によって作成され、std::visit_format_arg または std::basic_format_arg の visit メンバ関数からアクセスされます(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とします。 -
TDは std::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 はフォーマット関数内でのみ使用されます。
[編集] 関連項目
| (C++20) |
ユーザー定義フォーマッタのためにフォーマット引数へのアクセスを提供するクラステンプレート (クラステンプレート) |
| (C++20)(C++20) |
format_args に変換可能な、すべてのフォーマット引数を参照する型消去されたオブジェクトを作成する(関数テンプレート) |