std:: formatter < pair-or-tuple >
|
Определено в заголовочном файле
<format>
|
||
|
template
<
class
CharT,
std::
formattable
<
CharT
>
...
Ts
>
struct formatter < /*pair-or-tuple*/ < Ts... > , CharT > ; |
(начиная с C++23) | |
Специализация шаблона std::formatter для std::pair и std::tuple позволяет пользователям преобразовывать пару или кортеж в их текстовое представление как коллекцию элементов с использованием функций форматирования .
Экспозиционное имя /*pair-or-tuple*/ обозначает либо шаблон класса std::pair , либо std::tuple .
Эта специализация удовлетворяет Formatter требованиям, если ( std:: formattable < const Ts, CharT > && ... ) является true . Она всегда удовлетворяет BasicFormatter требованиям.
Содержание |
Спецификация формата
Синтаксис tuple-format-spec следующий:
| tuple-fill-and-align (необязательно) width (необязательно) tuple-type (необязательно) | |||||||||
tuple-fill-and-align
интерпретируется так же, как
fill-and-align
, за исключением того, что
fill
в
tuple-fill-and-align
— это любой символ, кроме
{
,
}
или
:
.
width описывается в стандартной спецификации ширины формата .
tuple-type изменяет способ форматирования кортежа, причем некоторые опции действительны только для определенных типов аргументов.
Доступные типы представления кортежа:
-
m: Указывает, что и открывающие, и закрывающие скобки должны быть "" , тогда как разделитель должен быть ": " .
-
-
Если
mвыбран как tuple-type , программа является некорректной, если только sizeof... ( Ts ) == 2 не равно true .
-
Если
-
n: Указывает, что разделитель, открывающие и закрывающие скобки должны быть "" .
Объекты-члены
| Название члена | Определение |
underlying_
(приватный)
|
кортеж базовых форматтеров типа
std::
tuple
<
std::
formatter
<
std::
remove_cvref_t
<
Ts
>
, CharT
>
...
>
( объект-член только для демонстрации* ) |
separator_
(приватный)
|
строка, представляющая разделитель форматированного результата кортежа (по умолчанию
", "
)
( объект-член только для демонстрации* ) |
opening-bracket_
(приватный)
|
строка, представляющая открывающую скобку форматированного результата кортежа (по умолчанию
"("
)
( объект-член только для демонстрации* ) |
closing-bracket_
(приватный)
|
строка, представляющая закрывающую скобку форматированного результата кортежа (по умолчанию
")"
)
( объект-член только для демонстрации* ) |
Функции-члены
|
set_separator
|
задает указанный разделитель для форматированного вывода кортежа
(public member function) |
|
set_brackets
|
задает указанные открывающую и закрывающую скобки для форматированного вывода кортежа
(public member function) |
|
parse
|
разбирает спецификатор формата, как указано в
tuple-format-spec
(public member function) |
|
format
|
записывает форматированный вывод кортежа, как указано в
tuple-format-spec
(public member function) |
std::formatter< pair-or-tuple >:: set_separator
|
constexpr
void
set_separator
(
std::
basic_string_view
<
CharT
>
sep
)
noexcept
;
|
||
Присваивает
sep
переменной
separator_
.
std::formatter< pair-or-tuple >:: set_brackets
|
constexpr
void
set_brackets
(
std::
basic_string_view
<
CharT
>
opening,
std:: basic_string_view < CharT > closing ) noexcept ; |
||
Присваивает
opening
и
closing
переменным
opening-bracket_
и
closing-bracket_
соответственно.
std::formatter< pair-or-tuple >:: parse
|
template
<
class
ParseContext
>
constexpr auto parse ( ParseContext & ctx ) - > ParseContext :: iterator ; |
||
Анализирует спецификаторы формата как tuple-format-spec и сохраняет распарсенные спецификаторы в текущем объекте.
Если присутствует
tuple-type
или опция
n
, значения
opening-bracket
,
closing-bracket
и
separator
изменяются соответствующим образом.
Для каждого элемента
e
в
underlying_
вызывает
e.
parse
(
ctx
)
для анализа пустого
format-spec
и, если выражение
e.
set_debug_format
(
)
валидно, вызывает
e.
set_debug_format
(
)
.
Возвращает итератор на позицию за концом tuple-format-spec .
std::formatter< pair-or-tuple >:: format
|
template
<
class
FormatContext
>
FormatContext
::
iterator
|
||
/*maybe-const-pair-or-tuple*/ обозначает:
- const /*pair-or-tuple*/ , если ( std:: formattable < const Ts, CharT > && ... ) равно true ,
- /*pair-or-tuple*/ в противном случае.
Записывает следующее в ctx. out ( ) в соответствии с tuple-format-spec , в порядке:
-
opening-bracket_, -
для каждого индекса
I
в
[ 0 ,sizeof... ( Ts )):
-
-
если
I
!
=
0
,
separator_, -
результат записи
std
::
get
<
I
>
(
elems
)
через
std
::
get
<
I
>
(
underlying_) , и
-
если
I
!
=
0
,
-
closing-bracket_.
Возвращает итератор за конец выходного диапазона.
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3892 | C++23 | форматирование вложенных кортежей было некорректным | исправлено |
Смотрите также
|
(C++20)
|
определяет правила форматирования для заданного типа
(шаблон класса) |