Пространства имён
Варианты
Действия

std::basic_format_arg

Материал из cppreference.com
< cpp‎ | utility‎ | format
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Библиотека форматирования
Функции форматирования
(C++20)
(C++20)
(C++20)
(C++20)
Концепты форматирования
Форматировщик
(C++20)
Аргументы форматирования
basic_format_arg
(C++20)
(C++20) (устарело в C++26)
Ошибка формата
 
Определено в заголовочном файле <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

Содержание

[править] Классы элементы

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

[править] Функции-элементы

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

[править] Функции, не являющиеся элементами

(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

[править] Пример

[править] Смотрите также

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