std:: basic_format_parse_context
|
헤더에 정의됨
<format>
|
||
|
template
<
class
CharT
>
class basic_format_parse_context ; |
(C++20부터) | |
자동 인덱싱을 위한 인수 카운터와 파싱 중인 형식 문자열 범위로 구성된 형식 문자열 파싱 상태에 대한 액세스를 제공합니다.
A
std::basic_format_parse_context
인스턴스는 형식 지정자 파싱 시
Formatter
에 전달됩니다.
std::basic_format_parse_context
의 명시적 또는 부분 특수화를 선언하는 프로그램은 진단 없이 잘못된 형식입니다.
일반적인 문자 타입에 대한 여러 typedef가 제공됩니다:
|
헤더 파일에 정의됨
<format>
|
|
| 타입 | 정의 |
std::format_parse_context
|
std :: basic_format_parse_context < char > |
std::wformat_parse_context
|
std :: basic_format_parse_context < wchar_t > |
멤버 타입
| 타입 | 정의 |
char_type
|
CharT
|
iterator
|
std:: basic_string_view < CharT > :: const_iterator |
const_iterator
|
std:: basic_string_view < CharT > :: const_iterator |
멤버 함수
|
(constructor)
|
포맷 문자열과 인수 개수로부터
std::basic_format_parse_context
인스턴스를 생성함
(public member function) |
|
operator=
[deleted]
|
std::basic_format_parse_context
는 복사할 수 없음
(public member function) |
|
begin
|
포맷 문자열 범위의 시작을 가리키는 반복자를 반환함
(public member function) |
|
end
|
포맷 문자열 범위의 끝을 가리키는 반복자를 반환함
(public member function) |
|
advance_to
|
시작 반복자를 주어진 위치로 전진시킴
(public member function) |
|
next_arg_id
|
자동 인덱싱 모드로 전환하고 다음 인수 인덱스를 반환함
(public member function) |
|
check_arg_id
|
수동 인덱싱 모드로 전환하고 주어진 인수 인덱스가 범위 내에 있는지 확인함
(public member function) |
|
check_dynamic_spec
(C++26)
|
주어진 인수 인덱스에 해당하는 포맷 인수의 타입이 주어진 타입 템플릿 인수들 중에 있는지 확인함
(public member function) |
|
check_dynamic_spec_integral
(C++26)
|
주어진 인수 인덱스에 해당하는 포맷 인수의 타입이 정수형 타입인지 확인함
(public member function) |
|
check_dynamic_spec_string
(C++26)
|
주어진 인수 인덱스에 해당하는 포맷 인수의 타입이 문자열 타입인지 확인함
(public member function) |
std::basic_format_parse_context:: basic_format_parse_context
| (1) | ||
|
constexpr
explicit
basic_format_parse_context
(
std::
basic_string_view
<
CharT
>
fmt,
|
(until C++26) | |
|
constexpr
explicit
basic_format_parse_context ( std:: basic_string_view < CharT > fmt ) noexcept ; |
(since C++26) | |
|
basic_format_parse_context
(
const
basic_format_parse_context
&
)
=
delete
;
|
(2) | |
std::basic_format_parse_context
인스턴스를 생성합니다. 형식 문자열 범위를
[
fmt.
begin
(
)
,
fmt.
end
(
)
)
로 초기화하고, 인수 개수를
num_args
(until C++26)
0
(since C++26)
로 초기화합니다.
|
이 생성자를 사용하여 초기화된
|
(since C++26) |
std::basic_format_parse_context
는 복사할 수 없습니다.
std::basic_format_parse_context:: begin
|
constexpr
const_iterator begin
(
)
const
noexcept
;
|
||
포맷 문자열 범위의 시작 부분을 가리키는 반복자를 반환합니다.
std::basic_format_parse_context:: end
|
constexpr
const_iterator end
(
)
const
noexcept
;
|
||
포맷 문자열 범위의 끝을 가리키는 반복자를 반환합니다.
std::basic_format_parse_context:: advance_to
|
constexpr
void
advance_to
(
const_iterator it
)
;
|
||
포맷 문자열 범위의 시작을
it
으로 설정합니다.
advance_to()
호출 후,
begin()
호출은
it
의 복사본을 반환합니다.
end ( ) 이 it 에서 도달 가능하지 않은 경우 동작은 정의되지 않습니다.
std::basic_format_parse_context:: next_arg_id
|
constexpr
std::
size_t
next_arg_id
(
)
;
|
||
자동 인자 인덱싱 모드로 전환하고, 0부터 시작하는 다음 인자 인덱스를 반환합니다.
만약 * this 가 이미 수동 인자 인덱싱 모드에 진입한 경우, std::format_error 를 발생시킵니다.
다음 인자 인덱스가 생성자에서 제공된 num_args 보다 크거나 같은 경우, 이 호출은 핵심 상수 표현식이 아닙니다.
std::basic_format_parse_context:: check_arg_id
|
constexpr
void
check_arg_id
(
std::
size_t
id
)
;
|
||
수동 인자 인덱싱 모드로 전환합니다.
만약 * this 가 이미 자동 인자 인덱싱 모드에 진입한 상태라면, std::format_error 를 발생시킵니다.
만약 id 가 생성자에서 제공된 num_args 보다 크거나 같으면, 해당 호출은 핵심 상수 표현식이 아닙니다.
std::basic_format_parse_context:: check_dynamic_spec
|
template
<
class
...
Ts
>
constexpr void check_dynamic_spec ( std:: size_t id ) noexcept ; |
(C++26부터) | |
만약 id 가 생성자에서 제공된 num_args 보다 크거나 같거나, 해당하는 형식 인자( std::basic_format_arg 로의 변환 후)의 타입이 Ts... 에 있는 타입들 중 하나가 아닌 경우, 호출은 핵심 상수 표현식이 아닙니다. check_dynamic_spec 호출은 런타임에서는 아무런 효과가 없습니다.
다음 조건을 만족하지 않으면 프로그램의 형식이 잘못되었습니다: sizeof... ( Ts ) >= 1 , Ts... 의 타입들이 고유해야 하며, 각 타입은 다음 중 하나여야 합니다: bool , char_type , int , unsigned int , long long int , unsigned long long int , float , double , long double , const char_type * , std:: basic_string_view < char_type > , 또는 const void * .
std::basic_format_parse_context:: check_dynamic_spec_integral
|
constexpr
void
check_dynamic_spec_integral
(
std::
size_t
id
)
noexcept
;
|
(C++26부터) | |
다음 호출과 동등합니다: check_dynamic_spec < int , unsigned int , long long int , unsigned long long int > ( id ) . check_dynamic_spec_integral 호출은 런타임에서 아무런 효과가 없습니다.
std::basic_format_parse_context:: check_dynamic_spec_string
|
constexpr
void
check_dynamic_spec_string
(
std::
size_t
id
)
noexcept
;
|
(C++26부터) | |
check_dynamic_spec < const char_type * , std:: basic_string_view < char_type >> ( id ) 호출과 동등합니다. check_dynamic_spec_string 호출은 런타임에서 아무런 효과가 없습니다.
예제
|
이 섹션은 불완전합니다
이유: 예제 없음 |
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 수정된 동작 |
|---|---|---|---|
| LWG 3825 | C++20 |
check_arg_id
는 컴파일 타임 인수
id 검사를 가지고 있었지만,
next_arg_id
는 가지고 있지 않았음
|
추가됨 |
| LWG 3975 | C++20 |
basic_format_parse_context
의 사용자 특수화가 허용됨
|
허용되지 않음 |