std::basic_format_arg<Context>::handle
Определён в заголовочном файле <format> | ||
|---|---|---|
template< class Context > class basic_format_arg<Context>::handle; | (начиная с C++20) |
Обёртка со стиранием типа, позволяющая форматировать объект пользовательского типа.
Объекты handle обычно создаются с помощью std::make_format_args и доступны через std::visit_format_arg или функции-члены visit класса std::basic_format_arg(начиная с C++26).
Поля данных
Типичная реализация handle является TriviallyCopyable и хранит только два нестатических поля данных:
- указатель
const void*на форматируемый объект и - указатель на функцию
void (*)(std::basic_format_parse_context<Context::char_type>&, Context&, const void*), выполняющую необходимые операции в функции-членеformat(см. ниже).
Функции-члены
|
format
(C++20) | форматирует указанный объект с заданными контекстами (функция-член общего назначения) |
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, еслиconst TDудовлетворяет__formattable_with<Context>, илиTDв противном случае, и -
ref— ссылка на аргумент форматирования.
Эквивалентно: typenameContext::templateformatter_type<TD>f; parse_ctx.advance_to(f.parse(parse_ctx)); format_ctx.advance_to(f.format(const_cast<TQ&>(static_cast<constTD&>(ref)),format_ctx));
Примечания
Объект handle содержит ссылку на форматируемый аргумент и не продлевает срок его жизни. Программист должен обеспечить, чтобы аргумент существовал дольше, чем handle. Обычно handle используется только внутри функций форматирования.
См. также
|
(C++20) | шаблон класса, предоставляющий пользовательским форматтерам доступ к аргументу форматирования (шаблон класса) |
|
(C++20)(C++20) | создаёт объект со стиранием типа, ссылающийся на все аргументы форматирования и преобразуемый в format_args (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/format/basic_format_arg/handle