Namespaces
Variants

C++ named requirements: Formatter (since C++20)

From cppreference.net
C++ named requirements

Formatter 는 주어진 서식 인수 타입과 문자 타입에 대한 서식 작업을 추상화하는 타입입니다. 표준 라이브러리에서 제공하는 std::formatter 의 특수화들은 달리 명시되지 않는 한 Formatter 요구 사항을 충족해야 합니다.

Formatter 는 일반적으로 const 참조를 취하는 format 멤버 함수를 제공함으로써 const 및 non-const 인수 모두를 포맷할 수 있습니다.

요구사항

타입이 다음 조건을 만족하면 Formatter 를 만족합니다: BasicFormatter 를 만족하고, 다음 타입들과 값들이 주어졌을 때 아래 표에 표시된 표현식들이 유효하며 표시된 의미를 갖는 경우:

유형 정의
CharT 문자 유형
Arg 포맷팅 인자 유형
Formatter Arg CharT 유형에 대한 Formatter 유형
OutputIt LegacyOutputIterator 유형
ParseCtx std:: basic_format_parse_context < CharT >
FmtCtx std:: basic_format_context < OutputIt, CharT >
정의
f Formatter 유형의 (const 한정 가능한) 값
arg Arg 유형의 lvalue
t Arg 로 변환 가능한 (const 한정 가능한) 값
parse_ctx 다음 모든 조건을 만족하는 ParseCtx 유형의 lvalue:
  • parse_ctx. begin ( ) 형식 문자열 에서 포맷 중인 치환 필드의 형식 지정자 시작 부분을 가리킵니다.
  • 형식 지정자 가 존재하지 않거나 비어 있는 경우, parse_ctx. begin ( ) == parse_ctx. end ( ) 이거나 * parse_ctx. begin ( ) == '}' 입니다.
fmt_ctx FmtCtx 유형의 lvalue
표현식 반환 타입 의미론
f. format ( t, fmt_ctx ) FmtCtx::iterator
  • f 에 저장된 지정자에 따라 t 를 포맷하고, 출력을 fmt_ctx. out ( ) 에 기록하며 출력 범위의 끝 반복자를 반환합니다.
  • 출력은 다음 요소들에만 의존할 수 있습니다:
    • t ,
    • fmt_ctx. locale ( ) ,
    • 마지막으로 호출된 f. parse ( parse_ctx ) 의 범위 [ parse_ctx. begin ( ) , parse_ctx. end ( ) ) , 그리고
    • std::size_t 타입의 임의의 값 n 에 대한 fmt_ctx. arg ( n ) .
f. format ( arg, fmt_ctx ) FmtCtx::iterator 위와 동일하지만 arg 를 수정하지 않습니다.

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 3892 C++20 format-spec 이 존재하지 않을 경우 pc. begin ( ) 의 값이 불명확했음 명확하게 규정됨