Namespaces
Variants

std::basic_format_arg<Context>:: handle

From cppreference.net
Определено в заголовке <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 и хранит только два нестатических члена данных:

  • a const void * указатель на форматируемый объект, и
  • a 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 будет ссылкой на форматируемый аргумент.

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

Смотрите также

шаблон класса, предоставляющий доступ к аргументу форматирования для пользовательских форматтеров
(шаблон класса)
создает объект со стиранием типа, ссылающийся на все аргументы форматирования, конвертируемый в format_args
(шаблон функции)