◐ Shell
clean mode source ↗

std::basic_format_arg — cppreference.com

Материал из cppreference.com

<tbody> </tbody>

Определено в заголовочном файле <format>

template< class Context > class basic_format_arg;

(начиная с C++20)

Предоставляет доступ к аргументу форматирования.

Объекты basic_format_arg обычно создаются с помощью std::make_format_args и доступны через std::visit_format_arg или функции-элементы visit (начиная с C++26).

Объект basic_format_arg ведёт себя так, как если бы он хранил std::variant следующих типов:

  • std::monostate (только если объект был создан по умолчанию)
  • bool
  • Context::char_type
  • int
  • unsigned int
  • long long int
  • unsigned long long int
  • float
  • double
  • long double
  • const Context::char_type*
  • std::basic_string_view<Context::char_type>
  • const void*
  • basic_format_arg::handle

Классы элементы

оболочка со стиранием типа, позволяющая форматировать объект пользовательского типа
(public элемент класса)

Функции-элементы

создаёт std::basic_format_arg
(public функция-элемент)
проверяет, содержит ли текущий объект аргумент форматирования
(public функция-элемент)
посещает сохранённый аргумент форматирования
(public функция-элемент)

Функции, не являющиеся элементами

(C++20) (устарело в C++26)

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

std::basic_format_arg::basic_format_arg

<tbody> </tbody>

basic_format_arg() noexcept;

(начиная с C++20)

Конструктор по умолчанию. Создаёт basic_format_arg, который не содержит аргумент форматирования. Сохранённый объект имеет тип std::monostate.

Чтобы создать basic_format_arg, который содержит аргумент форматирования, необходимо использовать std::make_format_args.

std::basic_format_arg::operator bool

<tbody> </tbody>

explicit operator bool() const noexcept;

(начиная с C++20)

Проверяет, содержит ли *this аргумент форматирования.

Возвращает true, если *this содержит аргумент форматирования (т.е. хранимый объект не имеет типа std::monostate), false иначе.

std::basic_format_arg::visit

<tbody> </tbody>

template< class Visitor > decltype(auto) visit( this basic_format_arg arg, Visitor&& vis );

(1) (начиная с C++26)

template< class R, class Visitor > R visit( this basic_format_arg arg, Visitor&& vis );

(2) (начиная с C++26)

Применяет посетителя vis к объекту, содержащемуся в arg.

Функции visit не изменяют объект basic_format_arg, для которого они вызываются, поскольку при вызове vis используется копия объекта.

1) Эквивалентно return std::visit(std::forward<Visitor>(vis), v);, где v это std::variant, сохранённый в arg.

2) Эквивалентно return std::visit<R>(std::forward<Visitor>(vis), v);, где v это std::variant, сохранённый в arg.

Примечание

Макрос тест функциональности
__cpp_lib_format 202306L (C++26) Элемент visit

Пример

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