Spec-Zone.ru › C++

std::basic_format_arg

Определён в заголовочном файле <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

Вложенные классы

handle
(C++20)
обёртка со стёртым типом, позволяющая форматировать объект пользовательского типа
(открытый вложенный класс)

Функции-члены

(конструктор)
(C++20)
создаёт std::basic_format_arg
(открытая функция-член)
operator bool
(C++20)
проверяет, хранит ли текущий объект аргумент форматирования
(открытая функция-член)
visit
(C++26)
посещает сохранённый аргумент форматирования
(открытая функция-член)

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

visit_format_arg
(C++20) (устарела в C++26)
интерфейс обхода аргументов для форматтеров, определённых пользователем
(шаблон функции)

std::basic_format_arg::basic_format_arg

basic_format_arg() noexcept;
(начиная с C++20)

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

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

std::basic_format_arg::operator bool

explicit operator bool() const noexcept;
(начиная с C++20)

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

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

std::basic_format_arg::visit

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

Пример

См. также

basic_format_argsformat_argswformat_args
(C++20)(C++20)(C++20)
класс, предоставляющий доступ ко всем аргументам форматирования
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/format/basic_format_arg

Spec-Zone.ru

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