Spec-Zone.ru › C++

Требования к именованным типам C++: BasicFormatter (с C++20)

BasicFormatter — это тип, абстрагирующий операции форматирования для заданного типа аргумента форматирования и типа символа. Специализации std::formatter должны удовлетворять требованиям BasicFormatter.

BasicFormatter является Formatter, если он может форматировать как константные, так и неконстантные аргументы.

Требования

Тип удовлетворяет требованиям BasicFormatter, если он является полурегулярным, то есть удовлетворяет следующим требованиям:

  • DefaultConstructible
  • CopyConstructible
  • CopyAssignable
  • Destructible
  • Swappable

И, учитывая

  • Arg, тип аргумента форматирования
  • CharT, тип символа
  • BasicFormatter, тип BasicFormatter для типов Arg и CharT
  • OutputIt, тип LegacyOutputIterator
  • f, значение типа (возможно, const) BasicFormatter
  • g, значение типа BasicFormatter
  • arg, lvalue типа Arg
  • ParseContext, псевдоним типа std::basic_format_parse_context<CharT>
  • FormatContext, псевдоним типа std::basic_format_context<OutputIt, CharT>
  • parse_ctx, lvalue типа ParseContext
  • format_ctx, lvalue типа FormatContext
Выражение Тип возврата Семантика
g.parse(parse_ctx) ParseContext::iterator
  • Разбирает формат-спецификатор [parse_ctx.begin(), parse_ctx.end()) для типа Arg до первого несовпадающего символа.
  • Бросает std::format_error в случае неудачи при разборе всего диапазона или при обнаружении несовпадающего символа, за исключением }. [примечание 1]
  • Хранит разобранные спецификаторы формата в g и возвращает итератор конца разобранного диапазона.
f.format(arg, format_ctx) FormatContext::iterator
  • Форматирует arg в соответствии со спецификаторами, хранящимися в f, записывает результат в format_ctx.out() и возвращает итератор конца выходного диапазона.
  • Выходные данные зависят только от
    • arg,
    • format_ctx.locale(),
    • диапазона [parse_ctx.begin(), parse_ctx.end()) с последнего вызова f.parse(parse_ctx), и
    • format_ctx.arg(n) для любого значения n типа std::size_t.
  1. Это позволяет форматировщикам выводить осмысленные сообщения об ошибках.

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/BasicFormatter

Spec-Zone.ru

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