On this page
std::basic_format_arg<Context>::handle
Defined in header <format> |
||
|---|---|---|
|
(since C++20) |
A type-erased wrapper that allows formatting an object of a user-defined type.
handle objects are typically created by std::make_format_args and accessed through std::visit_format_arg or the visit member functions of std::basic_format_arg(since C++26).
Data members
A typical implementation of handle is TriviallyCopyable and only stores two non-static data members:
- a
const void*pointer to the object to be formatted, and - a
void (*)(std::basic_format_parse_context<Context::char_type>&, Context&, const void*)function pointer to the function performing needed operations in theformatmember function (see below).
Member functions
|
format
(C++20)
|
formats the referenced object with the given contexts (public member function) |
std::basic_format_arg<Context>::handle::format
|
(since C++20) |
Let
Tbe the type of the formatting argument,TDbestd::remove_const_t<T>,TQbeconst TDifconst TDsatisfies__formattable_with<Context> orTDotherwise, andrefbe a reference to the formatting argument.
Equivalent to: 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));
Notes
A handle has reference semantics for the formatted argument and does not extend its lifetime. It is the programmer's responsibility to ensure that the argument outlives the handle. Usually, a handle is only used within formatting functions.
See also
|
(C++20)
|
class template that provides access to a formatting argument for user-defined formatters (class template) |
|
(C++20)(C++20)
|
creates a type-erased object referencing all formatting arguments, convertible to format_args (function template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/format/basic_format_arg/handle