Namespaces
Variants

std:: formatter < pair-or-tuple >

From cppreference.net
헤더에 정의됨 <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

format ( /*maybe-const-pair-or-tuple*/ < Ts... > & elems, FormatContext & ctx ) const ;

/*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_ ) 를 통해 기록한 결과, 그리고
  • closing-bracket_ .

출력 범위의 끝을 지난 반복자를 반환합니다.

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 3892 C++23 중첩 튜플의 서식 지정이 올바르지 않았음 수정됨

참고 항목

(C++20)
주어진 타입에 대한 서식 규칙을 정의함
(클래스 템플릿)