namespace std {
template<class Context>
class basic_format_arg<Context>::handle;
}
概要
basic_format_arg
においてユーザー定義型の値とフォーマット関数のアドレスを保持するのに使用されるクラス。
メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
format |
ユーザー定義型に対応するフォーマット関数を実行する | C++20 |
実装例
namespace std {
template<class Context>
class basic_format_arg<Context>::handle {
using charT = typename Context::char_type;
using format_function = void(*)(basic_format_parse_context<charT>&, Context&, const void*);
const void* ptr_;
format_function format_;
template<class T> explicit handle(const T& val) noexcept
:ptr_(addressof(val))
,format_function(
[](basic_format_parse_context<charT>& parse_ctx, Context& format_ctx, const void* ptr) {
typename Context::template formatter_type<T> f;
parse_ctx.advance_to(f.parse(parse_ctx));
format_ctx.advance_to(f.format(*static_cast<const T*>(ptr), format_ctx));
}
)
{}
friend class basic_format_arg<Context>;
public:
void format(basic_format_parse_context<charT>& parse_ctx, Context& format_ctx) const
{
format_(parse_ctx, format_ctx, ptr_);
}
};
}
バージョン
言語
- C++20
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??