Namespaces
Variants

std:: basic_format_parse_context

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

std:: size_t num_args = 0 ) noexcept ;
(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)
1) std::basic_format_parse_context 인스턴스를 생성합니다. 형식 문자열 범위를 [ fmt. begin ( ) , fmt. end ( ) ) 로 초기화하고, 인수 개수를 num_args (until C++26) 0 (since C++26) 로 초기화합니다.

이 생성자를 사용하여 초기화된 std::basic_format_parse_context 인스턴스에서 next_arg_id , check_arg_id , 또는 check_dynamic_spec 를 호출하는 것은 핵심 상수 표현식이 아닙니다.

(since C++26)
2) 복사 생성자는 삭제되었습니다. 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 의 사용자 특수화가 허용됨 허용되지 않음