Spec-Zone.ru › C++

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 используется только внутри функций форматирования.

См. также

basic_format_arg
(C++20)
шаблон класса, предоставляющий пользовательским форматтерам доступ к аргументу форматирования
(шаблон класса)
make_format_argsmake_wformat_args
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API