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나 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
와 동일하게 해석되지만,
tuple-fill-and-align
의
fill
은
{
,
}
, 또는
:
를 제외한 모든 문자입니다.
width 는 표준 형식 너비 명세 에 설명되어 있습니다.
tuple-type 은 튜플 형식 지정 방식을 변경하며, 특정 옵션들은 특정 인수 타입에서만 유효합니다.
사용 가능한 튜플 표현 형식은 다음과 같습니다:
-
m: 여는 괄호와 닫는 괄호 모두 "" 이어야 하며 구분자는 ": " 이어야 함을 나타냅니다.
-
-
만약
m이 tuple-type 으로 선택되면, sizeof... ( Ts ) == 2 가 true 가 아닌 경우 프로그램은 형식에 맞지 않습니다.
-
만약
-
n: 구분자, 여는 괄호 및 닫는 괄호가 "" 이어야 함을 나타냅니다.
멤버 객체
| 멤버 이름 | 정의 |
underlying_
(private)
|
기본 포매터들의 튜플, 타입은
std::
tuple
<
std::
formatter
<
std::
remove_cvref_t
<
Ts
>
, CharT
>
...
>
( 설명 전용 멤버 객체* ) |
separator_
(private)
|
튜플 포맷 결과의 구분자를 나타내는 문자열 (기본값:
", "
)
( 설명 전용 멤버 객체* ) |
opening-bracket_
(private)
|
튜플 포맷 결과의 여는 괄호를 나타내는 문자열 (기본값:
"("
)
( 설명 전용 멤버 객체* ) |
closing-bracket_
(private)
|
튜플 포맷 결과의 닫는 괄호를 나타내는 문자열 (기본값:
")"
)
( 설명 전용 멤버 객체* ) |
멤버 함수
|
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
의 값이
필요에 따라 수정됩니다.
underlying_
의 각 요소
e
에 대해,
빈
format-spec
을 파싱하기 위해
e.
parse
(
ctx
)
를 호출하고,
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 | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3892 | C++23 | 중첩 튜플의 서식 지정이 올바르지 않았음 | 수정됨 |
참고 항목
|
(C++20)
|
주어진 타입에 대한 서식 규칙을 정의함
(클래스 템플릿) |