Namespaces
Variants

C++ 컴파일러 지원

From ko.cppreference.net
< cpp


다음 표는 새로운 C++ 기능에 대한 컴파일러 지원을 보여줍니다. 여기에는 표준의 승인된 개정판과 다양한 기술 명세서가 포함됩니다.

참고

* - 별표 *로 표시된 셀 위에 마우스를 올리면 추가 팝업 노트를 볼 수 있습니다.
DRnn - "DR" 다음의 숫자 nn는 해당 결함 보고서가 적용되는 대상 C++ 개정판을 나타냅니다. 예: DR20 → C++20.

C++29 기능

이 목록은 C++29/2d 초안 표준이 발전함에 따라 변경될 수 있습니다.

C++29 핵심 언어 기능

C++29 기능

 
논문

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
#embed 오프셋 매개변수  (FTM)* P3540R3
계약를 위한 가상 함수  (FTM)* P3097R3
팩 인덱싱를 위한 템플릿   (FTM)* P3670R4
지정 초기화자를 위한 기본 클래스   (FTM)* P2287R6
예외 사양이 있는 할당 해제 함수는 잘못된 형식입니다. P3424R2
조건부 noexcept 지정자는 복합 요구 사항  (FTM)* P3822R2
후위 증가 및 감소 연산자 함수의 기본값 설정 P3668R4
기본값 대입 연산자 함수에 제한 추가 P2953R5
DR26: consteval 전용 값  (FTM)* P4101R1
DR23: figment 및 약어를 명명된 유니버설 문자 이스케이프 P3733R1
DR20: 상호 배타성 제거를 위한 코루틴 프라미스 반환 함수  (FTM)* P3950R1
DR: 새로운 유니코드 권장 사항에 따른 식별자 조정 P3658R1
DR: 명시적 람다 캡처 는 어휘 순서로 선언되고 초기화됨 P3847R1 3.1
DR: 템플릿에 C 언어 연결 허용 P2243R0
DR: 부동 소수점 오버플로 동작 명확화 P3899R3
DR: 비결정적 포인터 근원 P2434R5
DR: 원자적 및 휘발성 접근에 대한 포인터 수명 종료 제거 해결 P2414R12
DR: 유효하지 않은 포인터에 대한 로드 및 저장 연산 정의 P3347R6
 

C++29 기능
 

논문
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

C++29 라이브러리 기능

C++29 기능

 
논문

 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
맵 컨테이너에 대한 더 나은 조회 함수  (FTM)* P3091R6
포인터 태깅  (FTM)* P3125R6
스레드 속성  (FTM)* P2019R9
해저드 포인터 배치  (FTM)* P3428R4
비트 순열  (FTM)*  (FTM)* P3104R6
P3772R2
std::shl 및 std::shr  (FTM)*  (FTM)* P3793R2
std::mdspan 복사 및 채우기 연산  (FTM)* P3242R4
std::simd::iota  (FTM)* P3319R6
std::expected::has_error()  (FTM)* P3798R1
view_interface::at()  (FTM)* P3052R2
std::formatter<std::error_code> P3395R6
std::to_chars의 기본 부동 소수점 표현 수정std::to_chars  (FTM)* P3505R4
요구 std::intptr_t 및 std::uintptr_t P3248R5
I/O 스트림에서 부호 있는 문자 타입 폐지 P3154R3
DR26: std::constant_wrapper에서 문자열 리터럴 지원 철회std::constant_wrapper  (FTM)* P4206R0 17
 

C++29 기능
 

논문
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

C++26 기능

C++26/2c 표준 초안이 발전함에 따라 이 목록은 변경될 수 있습니다.

C++26 핵심 언어 기능

C++26 기능

 
제안서

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
DR98: 토큰화에서 정의되지 않은 동작 제거 P2621R3 예 3.3 16.0.0*
DR98: 인코딩할 수 없는 문자열 리터럴을 잘못된 형식으로 만들기 P1854R4 14 14 16.0.0*
미평가 문자열 P2361R6 14 17 (부분)*
18
16.0.0*
@, $, `을(를) 기본 문자 집합 에 추가 P2558R2 15 예 16.0.0*
void* 에서 constexpr 캐스트 (FTM)* P2738R1 14 17
DR20: 표준 속성의 무시 가능성에 관하여 P2552R3 15 예
DR11: 중괄호 초기화를 위한 정적 저장소 P2752R3 14
사용자 생성 static_assert 메시지 ( FTM)*P2741R3 14 17 17
이름 없는 자리표시자 변수 ( FTM)*P2169R4 14 18 18
팩 인덱싱 ( FTM)*P2662R3 15 15 19
열거형에 대한 사용 중단된 산술 변환 제거 P2864R2 14 18
DR11/20: 템플릿 매개변수 초기화 P2308R1 9 18
반환된 참조를 임시 객체 에 바인딩하는 것 금지 P2748R5 14 19
구조적 바인딩 에 대한 속성 (FTM)* P0609R3 15 19
초기화되지 않은 읽기에 대한 오류 동작, [[indeterminate]] 속성 P2795R5
P3684R1
16
= delete("reason");  (FTM)* P2573R2 15 19
가변 인자 프렌드  (FTM)* P2893R3 15 20
DR98: 집계 초기화 에서 중괄호 생략 규칙 명확화 P3106R1 예 17
DR20: 모듈 선언이 매크로가 되는 것 금지 P3034R1 15
DR11: 사소한 무한 루프는 정의되지 않은 동작이 아님 P2809R3 14 19
constexpr placement new  (FTM)* P2747R2 15 20
구조적 바인딩 선언을 조건으로 사용  (FTM)* P0963R3 15 6 (부분)*
21
제약과 폴드 표현식 의 순서 지정 (FTM)* P2963R3 19
불완전 형식에 대한 포인터를 삭제하는 것은 잘못된 형식이어야 함 P3144R2 15 19 19 6.7
구조적 바인딩이 팩 을 도입할 수 있음 (FTM)* P1061R10 16 21
constexpr 구조적 바인딩 및 constexpr 변수에 대한 참조 P2686R5 16* 22 (부분)* 6.7
constexpr 예외  (FTM)* P3068R6 16
옥스포드 가변 인자 쉼표 P3176R1 15 20
사용 중단된 배열 비교 제거 P2865R6 15 20
#embed  (FTM)* P1967R14 15 19*
개념 및 변수 템플릿 템플릿 매개변수 ( FTM)*P2841R7 22 (부분) **
단순 공용체  (FTM)* P3074R7
P3726R2
관찰 가능 체크포인트 P1494R5 16
계약  (FTM)* P2900R14 16
리플렉션  (FTM)* P2996R13
P3096R12
P3293R3
P3394R4
P3795R2
16*
확장문  (FTM)* P1306R5 16
constexpr 가상 상속  (FTM)* P3533R2 16
전처리기 오류 진단 P2843R3 16
main을 전역 모듈에 연결 허용 P3618R0 16
DR20: 모듈 선언 앞에 #line 허용 P3868R1
DR17: 형식 템플릿 템플릿 매개변수에 대한 클래스 템플릿 인자 추론 P3865R3
계약 어설션에서 스플라이스 표현식의 const화 P3598R0
 

C++26 기능
 

제안서
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

C++26 라이브러리 기능

C++26 기능

 
문서

 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
charconv 함수의 성공 또는 실패 테스트<charconv> 함수  (FTM)* P2497R0 14 18 16.0.0*
std::text_encoding: 텍스트 인코딩 식별  (FTM)* P1885R12
P2862R1
14
std::to_string 및 std::to_wstring의 산술 오버로드가 std::format 사용  (FTM)* P2587R3 14
형식 인수 타입 검사  (FTM)* P2757R3 15
포인터 서식 지정  (FTM)* P2510R3 14* 17* 19.40**
std::chrono 값 클래스에 대한 해싱 지원 (FTM) **** P2592R3 16
<rcu>: 읽기-복사 갱신 ( FTM)*P2545R4 hazard_pointer
<: 위험 포인터> (FTM )*P2530R3ADL-proof std::projected
P2538R114 * 18* 19.38** 16.0.0*상수 표현식 안정 정렬 (
FTM )*P2562R115 21 멤버 std::basic_format_arg::visit()
(FTM )*** P2637R3 15 19
멤버 std::variant::visit()  (FTM)* P2637R3 15 18
std::is_within_lifetime  (FTM)* P2641R4
P3450R1
22 (부분)*
연관 컨테이너에 나머지 이종 오버로드 확장  (FTM)* P2363R5 16
std::weak_ptr를 정렬되지 않은 연관 컨테이너의 키로 사용 가능하게 함 (FTM )*** P1901R2 16
파일 스트림의 네이티브 핸들  (FTM)* P1759R6 14 18 16.0.0*
문자열 스트림과 std::string_view  연결 (FTM) * * *
*P2495R316 19  std::bitset과 std::string_view 연결 ( FTM ) * P2697R1
16 constexpr18 <16.0.0*><cmath>  및 complex에 대한 더 많은 ( FTM)* ( FTM )
*P1383R24.6 (부분)*비율에 새로운 2022 SI 접두사 추가: std::quecto, std::ronto,  std::ronna, std::quetta ( FTM ) *P2734R0
14 17 *std::function_ref: 타입 지우기 가능 호출 참조 ( FTM
)
*
P0792R14 P3961R116 std::copyable_function ( FTM )
*P2548R616 std::bind_front, std::bind_back
 , std::not_fn을 NTTP 호출 가능 객체에 적용 ( FTM)* ( FTM)* (
FTM )
* P2714R116 std::submdspan() ( FTM
)
*
*
*
P2630R4P3355R1 P3663R3 P3982R2
16 프리스탠딩 언어: 선택적 ::operator newP2013R519.38*프리스탠딩 <std::char_traits>, <std::errc> 및 <charconv>, <cstdlib> , cstring, cwchar 의 기능 (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * P2338R4
19.38*
 더 많은 프리스탠딩 기능 (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM)
* P2198R7
19.38* 포화 산술 (FTM) *
P0543R3
P4052R0
1416
* 18
<16.0.0*>디버깅: 디버깅 지원  (FTM)* P2546R5
P2810R4
16*
<linalg>: BLAS 기반의 자유 함수 선형 대수 인터페이스  (FTM)* P1673R13
P3050R2
P3222R0
P3371R5
assert() 매크로를 사용자 친화적으로 만들기P2264R7예 * 동적 형식 문자열 (
FTM )*P2918R2P3953R3 14
*
16*
18 16.0.0*
std::span::at() (
FTM )*P2821R514 18 16.0.0* std::complex에 튜플 프로토콜 추가 (
FTM) *P2819R215 19 std::generate_canonical에 대한 새로운 명세 P0952R2 16
19.42*더 이상 사용되지 않는 typedef std::allocator::is_always_equal 제거 P2868R3
15 18 16.0.0* 인수를 취하지 않는 std::basic_string::reserve() 함수 오버로드 제거
P2870R318 16.0.0* 더 이상 사용되지 않는 유니코드 변환 퍼싯( codecvt ) 제거
P2871R3<18 >16.0.0* 프리스탠딩: std::strtok 제거
(FTM )*P2937R014 19.40* 프리스탠딩 라이브러리: 부분 클래스 (
FTM )* (FTM )* (FTM )* (FTM )* (FTM )*P2407R514 19.42* 프리스탠딩 라이브러리: std::inout
, std::expected, std::span (FTM
 )* (FTM )* (FTM )* (FTM )*P2833R214
19.42* DR23: std::basic_const_iterator
는 기반 타입의 변환 가능성을 따라야 함 (FTM )*P2836R1P2950R0 14
19.40*
DR20: std::make_format_args
는 이제 전달 참조 대신 좌측값 참조만 허용 P2905R214 18 19.40* 16.0.0* DR20: 코드 유닛을 정수로 서식 지정 수정 (
FTM )*P2909R413.3 18 19.40* 16.0.0* views::concat (
FTM )*P2542R815 문자열 및 문자열 뷰 연결 (
FTM)*P2591R5 15 19 알고리즘에 대해 목록 초기화 활성화 ( FTM ) *
P2248R8P3217R0 P3787R215 std::ranges::generate_random ( FTM
)
*
P1068R11
std::reference_wrapper에 대한 비교, 및  std::pair, std::tuple, std::optional
, std::variant 비교에 대한 제약 (FTM)* (FTM)* P2944R314 2219 (부분) *Padded mdspan 레이아웃 (FTM ) * P2642R6
16 정수 상수를 사용한
std::span  및 std::mdspan을 위한 새로운 CTAD P3029R1 16 19
원자 최대 및 최소 (FTM)* P0493R5 16 std::formatter
std::filesystem::path  (FTM)* P2845R8 16
std::println()으로 빈 줄 출력< (> FTM)*P3142R0 14 *
19* 19.41**std::polymorphic_allocator::destroy의 비권장 해제P2875R4 14.3 *15 19.41*더 이상 사용되지 않는 strstreams 제거 P2867R219
더 이상 사용되지 않는 std::shared_ptr 원자 접근 API 제거 P2869R4std::wstring_convert 제거 P2872R3 19
DR23: std::print 의 효율적인 구현 허용
(FTM) *
P3107R5P3235R3 16 19.43*
상수 표현식 배치 new ( FTM)*P2747R2 15
20
실행 제어 라이브러리 (
FTM) *P2300R10P3388R3P3396R1 P3433R1 P3481R5 P3570R2
P3682R0 P3887R1추가 실행 제어 라이브러리 수정 P3373R4 P3826R5
P3986R1
P4154R0
P4159R0
std::inplace_vector
: 고정 용량을 가진 동적 크기 조정 벡터
(
FTM
)*P0843R14 P3981R2
P4022R0
16
std::philox_engine
: 카운터 기반 난수 엔진
(FTM )*P2075R616 std::optional
범위 지원
(
FTM
)* P3168R2P3913R116 22 (부분)* std::is_virtual_base_of : 가상 기반 클래스 감지를 위한 타입 특성
(FTM )*P2985R015 20
std::mdspan용
std::dims (
FTM) *P2389R216 19 DR11: std::ignore 타입의 공식 명세
P2968R215 19  19.42*DR20: 간접 호출 가능 개념에서 공통 참조 요구 사항 제거 (FTM ) * P2997R1
15 19 19.42* std::is_trivial 및
std::is_trivial_v  비권장P3247R215 21 DR20: 알고리즘 함수 객체 P3136R1 예 예
19.39*예 std::ranges::cache_latest_view ( FTM ) *
P3138R5 15 std::expected 동등 연산자 제약 (
FTM )*P3379R015 22 std::aligned_accessor
: 포인터 오버-정렬을 표현하는 std::mdspan 접근자  (FTM)* P2897R7 16 std::is_sufficiently_aligned
: 포인터의 정렬 전제 조건 검사 (FTM) *P2897R716 std::atomic_ref::address() ( FTM
)* P2835R7P3936R116 (부분)*22 (부분)* DR11/20: std::atomic
및  std::atomic_ref에서의 cv-한정 타입P3323R116 19.44*
상수 표현식
std::atomic 및
std::atomic_ref (FTM) * P3309R3 상수 표현식 특수 메모리 알고리즘
(FTM)* P3508R0P3369R015 stdbit.h 및
stdckdint.h ( FTM)* ( FTM
)
*
<P3370R1>15<*> 16 simd: 데이터 병렬 타입 ( FTM)*P1928R15 P3430R3 P2876R3P3691R1
P3922R1
<P3690R1>P3932R0P4012R1 16 (부분)*SIMD 수학 연산 P1928R15 P3844R4
실행 환경 생성을 위한 유틸리티
P3325R5
상수 표현식 예외 타입, 예:
std::bad_alloc
,
std::bad_cast
등
(FTM
) *
P3068R6
P3378R2P3842R2 16
std::simd::chunkP3441R216 SIMD 비트 연산 ( FTM)*P2933R4
std::simd에서
std::complex
값 인터리빙 지원
( FTM )
* P2663R7P3475R1 위험 제거 및 비권장 std::monostate를
utility로 이동P0472R315  21 19.50*std::indirect ( FTM
)std::memory_order::consume *
P3019R1416 std::polymorphic< (> FTM ) * P3019R14
16  더 많은 상수 표현식 컨테이너 및 어댑터 (FTM) * (
FTM )* (FTM ) *
(
 FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)*P3372R3 16 (부분)*21 (부분)*22 (부분)* 비-트리비얼 타입에 대한 상수 표현식 std::inplace_vector (FTM )*P3074R7std::ranges::as_input_view
( FTM) *
P3137R3
P3828R115* 16*std::ranges::approximately_sized_range 및 std::ranges::reserve_hint
( FTM)*P2846R6 hive
: 삭제된 요소에서 메모리 위치를 재사용하는 버킷 기반 컨테이너
(FTM
)*
P0447R28관찰 가능한 체크포인트를 위한 라이브러리 지원 ( FTM)*P1494R5 P3641R0
<16 >contracts : 계약 위반 처리 지원 (FTM) *
P2900R14 P3819R016 표준 라이브러리 강화 P3471R4 P3697R1
P3878R1
15
< (부분)*>19.44*  (부분)*19.50* (부분)*프리스탠딩 라이브러리: algorithm
,
execution
, memory
,
numeric
및 random (FTM )*
(<FTM>)<*> (<FTM>)<*>
(<FTM> )* (FTM )*P2976R1DR20: 연속 반복자를 포인터로 변환  P3349R015 19.51*meta : 리플렉션 라이브러리 지원 (FTM) *P2996R13P3394R4P3293R3
P3096R12
P3795R2 P4156R0 16 (부분) *
<리플렉션에서 오류 처리를 위한 상수 표현식 예외> ( FTM)*P3560R2 16
std::define_static_object
,
std::define_static_array
,
std::define_static_string
(FTM
) *P3491R316 std::simd::basic_vec 및 std::simd::basic_mask
는 범위 타입 P3480R616 std::optionalT  (FTM)* ( FTM
)*P2988R12P3836R2 16 22
std::string::subview()< 및 &> std::string_view::subview() (FTM) *P3044R216 22 상수 표현식
std::shared_ptr
및 그 친구들 (
FTM)* P3037R6코루틴 태스크 타입 (FTM ) * P3552R3
P3980R1P3927R2P3941R4 P4151R1비순차적 동시성을 위한 스코프 생성 (FTM )
* P3149R11P3815R1병렬 스케줄러 ( FTM
)
*
P2079R10
P3804R2
상수 표현식 예외를 사용한 고품질 발신자 진단  P3557R3execution::write_env 및 execution::unstoppable 발신자 어댑터
P3284R4
std::views::indices  (FTM)* P3060R3
16
병렬 범위 알고리즘 (
FTM)*P3179R9 P3709R2
원자 부동소수점 최소/최대  (FTM)* P3008R6 원자 감소 연산
( FTM)*P3111R8 SIMD 순열 연산
(
FTM )*P2664R11std::mdspan::at() P3383R3
16  std::exception_ptr_cast() (FTM) *
P2927R3 P3748R0P3981R216 (부분)* 표준화된 상수 표현식 타입 순서
( FTM )
* P2830R10P3778R0P4140R016 std::constant_wrapper
(
FTM
)*
P2781R9 P3978R316 23 std::apply 변경: std::apply_result
,
std::is_applicable
및
std::is_nothrow_applicable  (FTM)* P1317R2
std::promise 및
std::packaged_task에서 타입 지우기 할당자 사용을 일관되게 함 P3503R317 19.51*std::filesystem::path::display_string() 및  std::filesystem::path::native_encoded_string() (FTM) *
P2319R5std::istream::ignore() 덜 놀랍게 만들기 P3223R216 19.50* DR11: std::valarray
및 std::initializer_list에 대한 begin/end 불일치 해결  (FTM)* (
FTM)* P3016R6 19.51* std::flat_meow
수정 (FTM) * (FTM) *P3567R222 19.51* std::integer_sequence
를 구조적 바인딩 및 확장 문에서 사용 가능하게 함 ( FTM)*P1789R3 16 22 상수 표현식 텍스트 서식 지정 ( FTM ) *
P3391R2std::start_lifetime ( FTM)*P3726R2 std::is_structural : 구조적 타입 감지를 위한 타입 특성 (
FTM )*P3856R816 std::constant_wrapper
가  std::function_ref 생성자 인수로 사용됨 P3948R116 난수 생성에서
및 지원 P4037R1 기능 매크로를 사용한 계약 위반 처리기의 구현 정의 대체 가능성 감지 (FTM) * P3886R0
16 DR20: 뷰 반복자/센티넬의 사용자 정의 생성자를 private으로 만들기 P3059R2예 DR20: 더 안전한 사용을 위한 필터 뷰 확장 (
FTMsigned char)unsigned char* P3725R3
16

C++26 기능   문서 GCC libstdc++Clang libc++MSVC STL

Apple Clang*
DR20: 뷰 반복자/센티넬의 사용자 정의 생성자를 private으로 만들기 P3059R2 예
DR20: 더 안전한 사용을 위한 필터 뷰 확장  (FTM)* P3725R3 16
 

C++26 기능
 

문서
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

C++23 기능

C++23 핵심 언어 기능

C++23 기능

문서

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
리터럴 접미사 (부호 있는) size_t 용 ( FTM ) * P0330R8 11 13 19.43* 13.1.6* 6.5 2022.2 23.9
() 를 람다 에 대해 더 선택적으로 만들기 P1102R2 11 13 19.44* 13.1.6* 6.3 2022.2 22.5
if consteval ( FTM ) * P1938R3 12 14 19.44* 14.0.0* 6.3 2022.2 24.1
가비지 컬렉션 지원 제거 P2186R2 12 N/A 19.30* N/A N/A
static_assert 및 constexpr if 내 축소 문맥 변환 P1401R5 9 13 (부분)*
14
14.0.0* 2022.2 20.7
줄 접합 전 공백 제거 P2223R2 Yes Yes Yes 6.7 2022.2 Yes
선언 순서 레이아웃을 의무화 P1847R4 Yes Yes Yes Yes 2022.2 Yes
혼합 와이드 문자열 리터럴 제거 concatenation P2201R1 Yes Yes Yes Yes Yes Yes Yes
명시적 객체 멤버 함수 (this 추론 this )  ( FTM ) * P0847R7 14 18
19*
19.32*
(부분적)*
19.43*
6.3 22.5
auto(x) 및 auto{x} ( FTM ) * P0849R8 12 15 14.0.3* 6.4 2022.2 23.3
#elifdef 및 #elifndef P2334R1 12 13 19.40* 13.1.6* 6.5 2022.2 23.9
constexpr 함수에서 비 리터럴 변수 (및 레이블과 goto) 허용  ( FTM ) * P2242R3 12 15 19.43* 14.0.3* 6.3 2022.2 22.5
일관된 문자 리터럴 인코딩 P2316R2 Yes Yes 19.30* Yes Yes 2022.2 Yes
문자 집합과 인코딩 P2314R4 10 예 예 예 2022.2 예
초기화-구문( for 루프 의)을 확장하여 별칭-선언 을 허용 P2360R0 12 14 14.0.0* 2022.2
다차원 첨자 연산자 ( FTM ) * P2128R6 12 15 19.42* 14.0.3* 2022.2
람다 에 대한 속성 P2173R1 9 13 19.44* 13.1.6* 6.6 2022.2 22.5
#warning P2437R1 예* 예 15.0.0* 6.5 2023.2 예
인코딩 불가능한 와이드 문자 리터럴 및 멀티캐릭터 와이드 문자 리터럴 제거 P2362R3 13 14 15.0.0* 6.7 2023.2
복합문 끝의 레이블 P2324R2 13 16 16.0.0* 6.5 2023.2 23.9
구분된 이스케이프 시퀀스 P2290R3 13 15 15.0.0* 6.7 2023.2
명명된 유니버설 문자 이스케이프 ( FTM ) * P2071R2 13 15 15.0.0* 6.7 2023.2
일부 constexpr 제한 완화  ( FTM ) * P2448R2 13 17 (부분적)
19
2024.0 (부분적)
간소화된 암시적 이동  ( FTM ) * P2266R3 13 13 6.7 2022.2
static operator ( ) ( FTM ) * P1169R4 13 16 19.44* 16.0.0* 6.7 2023.2
선택적 확장 부동 소수점 타입 에 대한 요구사항 P1467R9 13 N/A 6.4
상속된 생성자로부터의 클래스 템플릿 인수 추론 P2582R1 14
속성 [[ assume ]] P1774R8 13 19
이식 가능한 소스 파일 인코딩으로서의 UTF-8 지원 P2295R6 13* 15* 19.0 (Update 2)* * 15.0.0* 2023.2
static operator [ ] ( FTM ) * P2589R1 13 16 19.44* 16.0.0* 6.7 2023.2
constexpr 함수 내에서 static constexpr 변수 허용 ( FTM ) * P2647R1 13 16 16.0.0* 2023.2
범위 기반 for 루프 초기화에서 임시 객체의 수명 확장  ( FTM ) * P2644R1
P2718R0
CWG2659
15 19
선언과 그 위치 찾기 P1787R6
DR11: 람다 후행 반환 타입의 범위 변경 P2036R3
P2579R0
17 2023.2
DR20: 의미 있는 내보내기 P2615R1 15 17 (부분적)
DR20: consteval 상위로 전파되어야 함  ( FTM ) * P2564R3 14 17 16.0.0* 6.7 2024.0
DR98: 유니코드 표준 부록 31을 사용한 C++ 식별자 구문 P1949R7 12 14 14.0.0* 6.4 2022.2
DR11: 중복 속성 허용 attributes P2156R1 11 13 13.1.6* 6.5 23.9
DR20: 기능 테스트 매크로 값 조정 __cpp_concepts P2493R0 12 19.32* 6.4 23.3
DR98: 기존 관행에 맞춰 wchar_t 요구 사항 완화 P2460R2 Yes Yes Yes 15.0.0* N/A 2023.2
DR11: 상수 표현식에서 알려지지 않은 포인터와 참조 사용 P2280R4 14 20 *
DR20: 여러분이 찾고 있는 동등 연산자 P2468R2 13 16 16.0.0* 2023.2
DR20: char8_t 호환성 및 이식성 수정  ( FTM ) * P2513R4 13 16 19.34* 16.0.0* 2023.2
DR98/11: 진단 지시문 보고 방식을 명확히 하고 템플릿 컨텍스트에서 값에 의존하지 않는 표현식의 static_assert 를 허용함 CWG2518 13 17 16.0*
(부분적)*
19.40*


C++23 기능


문서
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

C++23 라이브러리 기능

변경된 부분: - `Feature-testing macro:` → `기능 테스트 매크로:` - HTML 태그, 속성, 코드 블록은 그대로 유지 - C++ 관련 용어(std::basic_string::contains(), std::basic_string_view::contains(), FTM, P1679R3 등)는 번역하지 않음 변경된 부분: - `Feature-testing macro:` → `기능 테스트 매크로:` HTML 태그, 속성, 코드 내의 텍스트(std::invoke_r(), FTM, P2136R3, 버전 번호 등)는 그대로 유지하고, 설명 텍스트만 한국어로 번역했습니다. 번역된 내용: - "Feature-testing macro:" → "기능 테스트 매크로:" - HTML 태그, 속성, ` `, `
`, `` 태그 내부의 내용은 번역하지 않고 원본 유지
- C++ 관련 용어(std::byteswap(), FTM, __cpp_lib_byteswap 등)는 번역하지 않음
- 나머지 텍스트는 정확하고 전문적인 한국어로 번역
**변경 사항:** - "Printing" → "출력" (C++ 출력 연산에 적합한 전문 용어) - HTML 태그, 속성, 코드 블록(`volatile T*`)은 원본 그대로 유지 - 버전 번호, 문서 링크, 표시 텍스트는 번역하지 않음 번역된 내용: - "Feature-testing macro:" → "기능 테스트 매크로:" - HTML 태그, 속성, ` `, `
`, `` 태그 내부의 내용은 번역하지 않고 원본 유지
- C++ 관련 용어(FTM, expected 등)는 번역하지 않음
- 모든 HTML 구조와 서식은 원본 그대로 보존
**변경 사항 설명:** - "constexpr for" → "에 대한 constexpr" (문장 구조를 자연스러운 한국어 어순으로 조정) - "and" → "및" - HTML 태그, 속성, ` `, `
`, `` 태그 내 내용은 그대로 보존
- C++ 관련 용어(constexpr, FTM, sin() 등)는 번역하지 않음
- 주석 텍스트만 한국어로 정확하게 번역
번역된 내용: - `Feature-testing macro:` → `기능 테스트 매크로:` - HTML 태그, 속성, ` `, `
`, `` 태그 내부의 내용은 번역하지 않고 원본 유지
- C++ 관련 용어(std::unreachable(), FTM, P0627R6 등)는 번역하지 않음
- 숫자 값과 버전 정보는 원본 그대로 유지
변경된 부분: - `13 (partial)*` → `13 (부분적)*` - `21 (partial)*` → `21 (부분적)*` - 툴팁 텍스트: - `type traits were implemented but some library changes were missing` → `type traits가 구현되었지만 일부 라이브러리 변경사항이 누락됨` - `only type traits were implemented` → `type traits만 구현됨` C++ 관련 용어(std, reference_constructs_from_temporary, reference_converts_from_temporary, FTM, P2255R2 등)와 HTML 태그, 코드 태그는 원본 그대로 유지되었습니다. 변경된 부분: - `and` → `및` (영어 "and"의 한국어 번역) 번역된 내용: - `Feature-testing macro:` → `기능 테스트 매크로:` - C++ 관련 용어(`views::chunk_by`, `FTM`, `__cpp_lib_ranges_chunk_by` 등)와 HTML 태그, 코드는 원본 유지 - 모든 HTML 구조와 속성, 스타일은 변경 없이 보존 변경된 부분: - `title="Feature-testing macro:` → `title="기능 테스트 매크로:` 나머지 텍스트는 C++ 관련 용어(`flat_map`, `FTM`, `P0429R9`)와 HTML 태그, 코드 태그 내부 내용은 번역하지 않고 원본을 유지했습니다. **번역 설명:** - "Compatibility between std::tuple and tuple-like objects" → "std::tuple과 튜플-유사 객체 간의 호환성" - "FTM"은 원문 그대로 유지 (기능 테스트 매크로 약어) - "partial" → "부분적"으로 번역 - HTML 태그, 속성, title 속성 내 텍스트는 번역하지 않고 원본 유지 - C++ 관련 용어(std::tuple, pair, array 등)는 번역하지 않음 번역된 내용: - "Feature-testing macro:" → "기능 테스트 매크로:" - C++ 관련 용어(`views::cartesian_product`, `__cpp_lib_ranges_cartesian_product`, `FTM` 등)는 원본 유지 - HTML 태그, 속성, 코드 블록은 변경 없이 보존 - 문서 제목(title 속성)은 한국어로 번역 **번역 결과:** **번역 설명:** - "should be explicit" → "는 명시적이어야 함"으로 번역 - C++ 용어(std::basic_string_view, constructor)는 원문 유지 - HTML 태그, 속성, 코드, 숫자 값은 모두 원본 그대로 보존 - 링크와 스타일 속성은 변경 없이 유지 **번역 설명:** - "Repairing"을 "수정"으로 번역하고 문장 구조를 자연스러운 한국어 어순으로 조정했습니다 - "and"를 "와"로 번역하여 연결어를 자연스럽게 처리했습니다 - HTML 태그, 속성, C++ 관련 용어(input range adaptors, std::counted_iterator)는 원본 그대로 유지했습니다 - title 속성 내의 텍스트도 번역하지 않고 원본을 유지했습니다 - 표의 숫자 데이터와 기호는 변경하지 않았습니다
C++23 기능

문서

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
스택트레이스 라이브러리 ( FTM ) * P0881R7
P2301R1
12 (부분적)*
14*
19.34*
<stdatomic.h> ( FTM ) * P0943R6 12 15 19.31* 14.0.3*
std::is_scoped_enum ( FTM ) * P1048R1 11 12 19.30* 13.0.0*
std::basic_string::contains() , std::basic_string_view::contains() ( FTM ) * P1679R3 11 12 19.30* 13.0.0*
std::to_underlying ( FTM ) * P1682R3 11 13 19.30* 13.1.6*
time_point<>::clock 에 대한 요구사항 완화 P2212R2 N/A N/A N/A N/A
Allocator 인터페이스에서 크기 피드백 제공 ( FTM ) * P0401R6 15 19.30* 14.0.3*
<spanstream> : std::span 기반 버퍼를 사용하는 문자열 스트림  ( FTM ) * P0448R4 12 19.31*
std::out_ptr() , std::inout_ptr() ( 기능 테스트 매크로 ) * P1132R8 14 19 19.30*
constexpr type_info::operator==() ( FTM ) * P1328R1 12 17 19.33* *
19.34*
15.0.0*
std::stack 및 std::queue 에 대한 반복자 쌍 생성자 ( FTM ) * P1425R4 12 14 19.31* 14.0.3*
컨테이너 추론 가이드에서 할당자를 위한 비-추론 문맥 P1518R2 12 * 13 * 19.31* * 13.1.6* *
ranges::starts_with() 및 ranges::ends_with() ( FTM ) * P1659R3 17 (부분적)*
18
19.31* 16.0.0*
std::basic_string 및 std::basic_string_view 의 nullptr 로부터의 생성 금지 P2166R1 12 13 19.30* 13.1.6*
std::invoke_r() ( FTM ) * P2136R3 12 17 19.31* 15.0.0*
범위 생성자 for std::basic_string_view P1989R2 11 14 19.30* 14.0.3*
std::pair 의 전달 참조 생성자 를 위한 기본 템플릿 인수 P1951R1 14 14 19.30* 14.0.3*
가비지 컬렉션 및 도달 가능성 기반 메모리 누수 감지 제거 ( 라이브러리 지원 ) P2186R2 12 14 19.30* 14.0.3*
zip: views::zip , views::zip_transform , views::adjacent , 및 views::adjacent_transform ( FTM ) * P2321R2 13 15 (부분)* 19.33* (부분)* * *
19.37*
14.0.3*
연관 컨테이너를 위한 이종 삭제 오버로드  ( FTM ) * P2077R3 19.32*
std::byteswap() ( FTM ) * P1272R4 12 14 19.31* 14.0.3*
출력 volatile T * P1147R1 11.3 14 19.31* 14.0.3*
basic_string::resize_and_overwrite() ( FTM ) * P1072R10 12 14 19.31* 14.0.3*
std::optional 모나딕 연산 ( FTM ) * P0798R8 12 14 19.32* 14.0.3*
std::move_only_function ( FTM ) * P0288R9 12 19.32*
std::exchange 에 조건부 noexcept 명세를 추가 P2401R0 12 14 19.25* 14.0.3*
std::span 및 std::basic_string_view 가 TriviallyCopyable 이어야 함을 요구 P2251R1 Yes Yes Yes Yes
"C 헤더"의 상태 명확화 P2340R1 Yes Yes Yes Yes
<expected> ( FTM ) * P0323R12
P2549R1
12 16 19.33* 15.0.0*
<cmath> 및 <cstdlib> 에 대한 constexpr ( FTM ) * P0533R9 4.6 (부분적)*
std::unreachable() ( FTM ) * P0627R6 12 15 19.32* 14.0.3*
std::aligned_storage 및 std::aligned_union 사용 중단 P1413R3 13 16 19.33*
std::reference_constructs_from_temporary & std::reference_converts_from_temporary ( FTM ) * P2255R2 13 (부분적)*
14
21 (부분적)*
constexpr std::unique_ptr ( FTM ) * P2273R3 12 16 19.33* 15.0.0*
범위로부터 컨테이너와 문자열을 생성하기 위해 ranges::to() , 태그된 생성자들, 삽입 및 할당 멤버 함수들 사용  ( FTM ) * ( FTM ) * P1206R7 14 (부분 지원)*
15
17 19.34* 15.0.0*
사용자 정의 범위 어댑터에 대한 파이프 지원 ( ranges::range_adaptor_closure , std::bind_back )  ( FTM ) * ( FTM ) * P2387R3 13 (부분적)*
14
19 19.34*
ranges::iota() , ranges::shift_left() , 및 ranges::shift_right() ( FTM ) * ( FTM ) * P2440R1 13 (부분적)* 19.34*
views::join_with ( FTM ) * P2441R2 13 19.34*
views::chunk 및 views::slide ( FTM ) * ( FTM ) * P2442R1 13 19.33*
views::chunk_by ( FTM ) * P2443R1 13 18 19.33* 16.0.0*
std::mdspan : 비소유 다차원 배열 참조  ( FTM ) * P0009R18
P2599R2
P2604R0
P2613R1
P2763R1
17 (부분적)*
18
19.39* 15.0.0*
<flat_map> ( FTM ) * P0429R9 15 20
<flat_set> ( FTM ) * P1222R4 15 21
ranges::find_last() , ranges::find_last_if() , 및 ranges::find_last_if_not() ( FTM ) * P1223R5 13 19 19.36*
독립형 라이브러리: 쉬움 <utility> , <ranges> , 및 <iterator> P1642R11 13 * N/A
views::stride ( FTM ) * P1899R3 13 19.34*
std::tuple 과 튜플-유사 객체 간의 호환성  ( FTM ) * P2165R4 14 2.9 (부분적)* 19.36* (부분적) *
19.37*
부분적*
상수 반복자, 센티넬 및 범위 수정. views:: as_const ( FTM ) * P2278R4 13 19.35* (부분적)*
19.36*
포맷팅 범위  ( FTM ) * P2286R8 15 (부분)*
15.2
16 19.37* (부분)*
19.39* (부분)*
19.41* (부분)*
19.42*
15.0.0*
기본 컨테이너 포맷팅 개선 ( FTM ) * P2585R1 15 16 (부분적)*
17
19.42* 15.0.0*
서식화된 출력 라이브러리 <print> ( FTM ) * P2093R14
P2539R4
14 17 (부분적)*
18
19.37* 15.0.0* *
16.0.0*
포맷팅 std::thread::id 및 std::stacktrace ( FTM ) * P2693R1 14 17 (부분적)* 19.38* 15.0.0*
constexpr std::to_chars() 및 std::from_chars() 의 정수형 오버로드에 대한 FTM * P2291R3 13 16 19.34* 15.0.0*
ranges::contains() 및 ranges::contains_subrange() ( FTM ) * P2302R4 13 18 (부분적)*
19
19.34* 16.0.0* *
범위 폴드 알고리즘 ( FTM ) * P2322R6 13 19.35*
views::cartesian_product ( FTM ) * P2374R4
P2540R1
13 19.37*
이동 전용(move-only) 타입에 대한 비교 개념 지원 추가 ( equality_comparable , totally_ordered , three_way_comparable )  ( FTM ) * P2404R3 19.36*
범위 반복자를 비범위 알고리즘의 입력으로 사용  ( FTM ) * P2408R5 19.34*
constexpr std::bitset ( FTM ) * P2417R2 13 16 19.34* 15.0.0*
basic_string::substr() && P2438R2 16 19.34* 15.0.0*
views::as_rvalue ( FTM ) * P2446R2 13 16 19.34* 15.0.0*
표준 라이브러리 모듈  ( FTM ) * P2465R3 15* 17 (부분)* 19.35*
(부분)*
19.36*
std::forward_like() ( FTM ) * P2445R1 14 16 19.34* 15.0.0*
std::fstream 을 위한 배타적 모드 지원 ( FTM ) * P2467R1 12 18 19.36* 16.0.0*
views::repeat ( FTM ) * P2474R2 13 17 19.36* 15.0.0*
범위 어댑터를 이동 전용(move-only) 타입을 허용하도록 완화  ( FTM ) * P2494R2 14 17 19.34* 15.0.0*
std::basic_string_view range constructor should be explicit P2499R0 12.2 16 19.34* 15.0.0*
std::basic_string_view range constructor 는 명시적이어야 함 P2499R0 12.2 16 19.34* 15.0.0*
std::generator : 범위를 위한 동기 코루틴 생성기  ( FTM ) * P2502R2
P2787R0
14 19.43*
std::apply 에 조건부 noexcept 명세를 추가 P2517R1 10 18 19.34* 16.0.0*
명시적 수명 관리 ( std::start_lifetime_as )  ( FTM ) * P2590R2
P2679R2
chrono 타입의 지역화된 포맷팅에서 인코딩 처리 명확화  ( FTM ) * P2419R2 15* 19.34* *
std::move_iterator 는 항상 input_iterator 가 아니어야 함 ( FTM ) * P2520R0 12.3* 17* 19.34* * 15.0.0*
명시적 객체 매개변수 호출 연산자에 대한 deduction guides 업데이트 LWG3617 14 19.34*
static operator ( ) 에 대한 추론 가이드 업데이트 P1169R4 13 16 19.39* 15.0.0*
확장 부동 소수점 타입에 대한 표준 이름 및 라이브러리 지원 P1467R9 13 19.37* *
std::expected 에 대한 모나딕 연산 ( FTM ) * P2505R5 13 17 19.36* 15.0.0*
views::enumerate ( FTM ) * P2164R9 13 19.37*
std::is_implicit_lifetime ( FTM ) * P2674R1 20
std::common_reference_t 의 std::reference_wrapper 는 참조 타입이어야 함  ( FTM ) * ( FTM ) * P2655R3 19.37*
사용자의 std::allocator_traits 특수화를 허용하지 않음 P2652R2 19 19.37*
사용 중단 예정 std::numeric_limits::has_denorm P2614R2 18 19.37* 16.0.0*
view s 의 다중 매개변수 생성자를 explicit 로 만들기 P2711R1 17 (부분)* 19.36* * 15.0.0*
DR20: Ranges를 살짝 완화  ( FTM ) * P2609R3 15 20 19.37*
DR20: 적절한 평탄화를 위한 스태싱 반복자 보관 P2770R0 14 18 19.37*
DR17: std::visit() for classes derived from std::variant ( FTM ) * P2162R2 11.3 13 19.20* *
19.30*
13.1.6*
DR20: 조건부로 차용된 범위 P2017R1 11 16 19.30*
DR20: input range adaptors 와 std::counted_iterator 수정 P2259R1 12 19.30* (partial)*
19.31*
DR20: views::join 는 모든 범위의 뷰를 결합해야 함 P2328R1 11.2 15 19.30* 14.0.3*
DR20: view 가 default_initializable 을 요구하지 않음 ( FTM ) * P2325R3 11.3 16 19.30* 15.0.0*
DR20: 범위 어댑터 객체는 인수를 값으로 바인딩함 P2281R1 11 14 19.29 (16.10)*
(부분적)*
19.31*
14.0.3*
DR20: constexpr for std::optional and std::variant ( FTM ) * ( FTM ) * P2231R1 11.3 (부분적)*
12
13 (부분적)*
19
19.31* 13.1.6* (부분적)
DR20: views::lazy_split 및 재설계된 views::split P2210R2 12 16 19.31* 15.0.0*
DR20: 수정 ranges::istream_view P2432R1 12 16 19.31* 15.0.0*
DR20: view 소유권을 가진  ( FTM ) * P2415R2 12 14 19.31* 14.0.3*
DR20: chrono 포매터의 로케일 처리 수정  ( FTM ) * P2372R3
P2418R2
13 19.31*
DR20: 정수 클래스 타입 정리 P2393R1 19.32*
DR20: 컴파일 타임 형식 문자열 검사; std::format() 계열의 바이너리 코드 크기 감소  ( FTM ) * P2216R3 13 14 (부분적)*
15
19.32* 14.0.3*
DR20: 비 const-포맷 가능 타입에 대한 지원을 std::format 에 추가 P2418R2 13 15 19.32* 14.0.3*
DR20: std::basic_format_string P2508R1 13 15 19.35* 14.0.3*
DR20: 포이즌 필이 너무 독하다  ( FTM ) * P2602R2 14 19 19.36*
DR20: std::format 채움 문자 허용 사항 P2572R1 14 17 19.37*
DR20: std::format 의 너비 추정 개선 P2675R1 14 17 19.38*
DR20: std::barrier 의 페이즈 완료 보장  ( FTM ) * P2588R3 19.28 (16.8)* *
19.36*


C++23 기능


논문
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

C++20 기능

C++20 핵심 언어 기능

**번역 설명:** - "Parenthesized initialization of aggregates" → "집계체의 괄호 초기화"로 번역 - HTML 태그, 속성, ` `, `
`, `` 태그 내 내용은 번역하지 않음
- C++ 전문 용어(aggregate, initialization, FTM 등)는 원문 유지
- 링크 텍스트와 기술적 내용은 정확성과 전문성을 유지하며 번역
C++20 기능

문서(들)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
람다 캡처 허용 Lambda capture [ = , this ] P0409R2 8 6 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
__VA_OPT__ P0306R4
P1042R1
8 (부분적)*
10 (부분적)*
12
9 19.25* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
지정자 초기화 ( FTM ) * P0329R4 4.7 (부분적)*
8
3.0 (부분적)*
10
19.21* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
제네릭 람다를 위한 템플릿 매개변수 목록 ( FTM ) * P0428R2 8 9 19.22* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
비트 필드를 위한 기본 멤버 초기화자 P0683R1 8 6 19.25* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
클래스 템플릿 인수 추론에서의 초기화자 리스트 생성자 P0702R1 8 6 19.14* Yes 5.0 2021.1 20.7 12.0 11.0
const & const 한정 멤버 포인터 P0704R1 8 6 19.0 (2015)* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
Concepts ( FTM ) * P0734R0 5*
10
10 19.23* (부분 지원)*
19.30*
12.0.0* (부분 지원) 6.1 2023.1* 20.11 12.0 11.0
평가되지 않은 컨텍스트에서의 람다 P0315R4 9 13 (부분적)*
14 (부분적)*
17
19.28 (16.8)* 13.1.6* (부분적) 6.2 2023.1 (부분적)
2024.0
20.7 12.0
3-way 비교 연산자 ( FTM ) * P0515R3 10 8 (부분적)
10
19.20* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11: 암시적 람다 캡처 단순화 P0588R1 8 19.24* 5.1 2021.1 20.7 12.0
범위 기반 for를 위한 초기화 문장 P0614R1 9 8 19.25* 11.0.0* 6.0 2021.7 20.11 12.0 11.0
기본 생성 가능하고 할당 가능한 상태 없는 lambdas P0624R2 9 8 19.22* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
기본화된 특수 멤버 함수의 타입 불일치 P0641R2 9 (부분)* 8 19.0 (2015)* (부분)* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
특수화에 대한 접근 검사 P0692R1 예 8 (부분적)
14
19.26* 14.0.0* 5.1 2021.1 20.7 12.0
ADL과 보이지 않는 함수 템플릿 P0846R0 9 9 19.21* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
DR11: constexpr 함수 정의가 상수 평가에 필요한 경우 를 명시함 ( FTM ) * P0859R0 5.2 (부분적)*
9
8 19.27* (부분적)*
19.31* *
11.0.0* (부분적) 12.0 11.0
속성 [[ likely ]] 및 [[ unlikely ]] P0479R5 9 12 19.26* 13.0.0* 5.1 2021.7 20.7 12.0
typename 사용을 더 선택적으로 만들기 P0634R3 9 16 19.29 (16.10)* 16.0.0* 5.1 2023.1 20.7 12.0
Pack-expansions in 람다 init-captures ( FTM ) * P0780R2 9 9 19.22* 11.0.3* 6.1 2021.7 20.11 12.0 11.0
속성 [[ no_unique_address ]] P0840R2 9 9 19.28 (16.9)* * 11.0.3* 5.1 2021.1 20.7 12.0 11.0
조건부로 단순화된 특수 멤버 함수  ( FTM ) * P0848R3 10 16 19.28 (16.8)* 6.1 2021.7 20.11 12.0
DR17: structured bindings 커스터마이제이션 포인트 탐색 규칙 완화 P0961R1 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
DR11: range-for 루프 커스터마이제이션 포인트 탐색 규칙 완화 P0962R1 8 8 19.25* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
DR17: 접근 가능한 멤버에 대한 구조화된 바인딩 허용 P0969R0 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Destroying operator delete ( FTM ) * P0722R3 9 6 19.27* 10.0.0* 6.1 2023.1 20.11 12.0 11.0
클래스 타입 상수 템플릿 매개변수 P0732R2 9 12 (부분적) 19.26* (부분적)*
19.28 (16.9)*
13.0.0* (부분적) 6.2 2023.1 (부분적) 21.3 12.0
[=] 를 통한 this 의 암시적 캡처 사용 중단 P0806R2 9 7 19.22* 10.0.1* 5.1 20.7 12.0 11.0
explicit(bool) ( FTM ) * P0892R2 9 9 19.24* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
기능 테스트 매크로 통합 P0941R2 5 3.4 19.15* (부분적)
19.20*
예 5.0 2021.1 20.7 12.0 11.0
사용자 선언 생성자가 있는 집합체(aggregate) 금지 P1008R1 9 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
constexpr 가상 함수 ( FTM ) * P1064R0 9 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
비교 연산 일관성 개선 P1120R0 10 8 (부분 지원)
10
19.22* 12.0.0* 5.1 2023.1 20.7 12.0 11.0
char8_t ( FTM ) * P0482R6 9 7* 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
std::is_constant_evaluated() ( FTM ) * P0595R2 9 9 19.25* 11.0.3* 5.1 19.1 21.1 12.0 11.0
constexpr try - catch 블록 P1002R1 9 8 19.25* 10.0.1* 5.1 2023.1 20.7 12.0 11.0
즉시 함수 ( consteval )  ( FTM ) * P1073R3 10 (부분적)*
11
11 (부분적)
14 (부분적)*
17
19.28 (16.8)*
(부분적)*

19.29 (16.10)*
11.0.3* (부분적)
15.0.0*
5.1 2021.1 20.7 12.0
중첩 인라인 네임스페이스 P1094R2 9 8 19.27* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
제약된 선언 을 위한 또 다른 접근법 P1141R2 10 10 19.26* (부분적)
19.28 (16.9)*
12.0.5* 6.1 2023.1 20.11 12.0 11.0
부호 있는 정수는 2의 보수 표현을 사용합니다 P1236R1 9 9 Yes 11.0.3* N/A 2023.1* yes* 12.0 11.0
dynamic_cast 및 다형적 typeid 의 상수 표현식 P1327R1 10 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
constexpr 내에서 유니온의 활성 멤버 변경 constexpr ( FTM ) * P1330R0 9 9 19.10* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
코루틴 ( FTM ) * ( FTM ) * P0912R5
LWG3393
10 8 (부분적)
17 (부분적)*
19.0 (2015)* (부분적)
19.10* *
19.28 (16.8)*
10.0.1* (부분적) 5.1 2021.1 23.3* 12.0 (호스트 코드만)
집계체의 괄호 초기화 initialization of aggregates ( FTM ) * P0960R3 10 16 19.28 (16.8)* 16.0.0* 5.1 2021.1 20.7 12.0
DR11: new 표현식에서 배열 크기 추론 new -expressions P1009R2 11 9 19.27* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
모듈 ( FTM ) * P1103R3 11 (부분적) 8 (부분적) 19.0 (2015)* (부분적)
19.10* *
19.28 (16.8)*
10.0.1* (부분적) 2023.1 (부분적)
강화된 유니코드 요구사항 P1041R4
P1139R2
10 Yes 19.0 (2015)* *
19.26* *
Yes N/A 2023.1* Yes 12.0 11.0
<=> != == P1185R2 10 10 19.22* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11: 다른 예외 명세를 가진 명시적으로 기본 설정된 함수 P1286R2 10 9 19.28 (16.8)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
람다 캡처 및 구조화된 바인딩의 저장 클래스 지정자 P1091R3
P1381R1
10 8 (부분적)
16
19.11* *
19.24* *
16.0.0* 5.1 2021.1 20.7 12.0
알 수 없는 경계의 배열로의 변환 허용 P0388R4 10 14 19.27* 14.0.0* 6.0 2021.5 20.11 12.0
constexpr 컨테이너 연산들  ( FTM ) * P0784R7 10 10 19.28 (16.9)* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
volatile 의 일부 사용을 폐지 예정 P1152R4 10 10 19.27* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
constinit ( FTM ) * P1143R2 10 10 19.29 (16.10)* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
첨자에서 쉼표 연산자 사용 중단 P1161R3 10 9 19.25* 11.0.3* 6.0 2021.7 20.11 12.0 11.0
[[ nodiscard ]] 메시지 포함 P1301R4 10 9 19.25* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
constexpr 함수에서의 trivial 기본 초기화 P1331R2 10 10 19.27* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
평가되지 않은 asm 선언문을 constexpr 함수에서 사용 P1668R1 10 10 19.28 (16.9)* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
using enum ( FTM ) * P1099R5 11 13 19.24* 13.1.6* 6.3 2023.1 22.5 12.0
지정된 비교 범주에 대한 Three-way comparison 합성 P1186R3 11 10 19.24* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
DR17: [[ nodiscard ]] 생성자용 P1771R1 10 9 19.24* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
별칭 템플릿에 대한 클래스 템플릿 인수 추론 ( FTM ) * P1814R0 10 19 19.27* 6.5 23.9 12.0
집계체에 대한 클래스 템플릿 인수 추론 ( FTM ) * P1816R0
P2082R1
10*
11*
17 19.27* 6.3 2023.1 (부분적)*
2024.1
23.3 12.0
DR11: 더 많은 지역 객체와 우측값 참조에 대한 암시적 이동 P1825R0 11* 13 19.24* 13.1.6* 6.0 2021.5 20.11 12.0
값으로 비교 기본 설정 허용 P1946R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
std::weak_equality 및 std::strong_equality 제거 P1959R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
상수 템플릿 매개변수와의 불일치  ( FTM ) * P1907R1 10 (부분적)
11
18 (부분적)* 19.26* 13.1.6* (부분적) 6.2 2023.1 (부분적) 21.3 12.0
DR98: 유사 소멸자는 객체 수명을 종료시킴 P0593R6 11 11 Yes 12.0.5* N/A 2023.1* Yes 12.0 11.0
DR11: T * 에서 bool 로의 변환은 축소 변환으로 간주되어야 함 P1957R2 10*
11*
11 19.27* 12.0.5* 6.1 12.0 11.0


C++20 기능


논문
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

C++20 라이브러리 기능

**변역 설명:** - "Synchronized buffered" → "동기화된 버퍼"로 정확한 기술 용어로 번역 - HTML 태그, 속성, ` `, `
`, `` 태그 내 내용은 번역하지 않고 원본 유지
- C++ 관련 용어(std::basic_osyncstream, FTM, P0053R7 등)는 번역하지 않음
- 숫자, 버전 정보 등은 원본 그대로 보존
- 전문적인 기술 문서에 적합한 정확한 번역 적용
변경사항: - "More constexpr for" → "에 대한 추가 constexpr" (문장 구조를 자연스러운 한국어 어순으로 조정) - "partial" → "부분적" - HTML 태그, 속성, 코드 블록은 그대로 유지 - C++ 관련 용어(constexpr, FTM 등)는 번역하지 않음 - 전문적인 번역 스타일 유지 번역된 내용: - `Feature-testing macro:` → `기능 테스트 매크로:` - HTML 태그, 속성, ` `, `
`, `` 태그 내부의 내용은 번역하지 않고 원본 유지
- C++ 관련 용어(`std::remove_cvref`, `FTM`, `__cpp_lib_remove_cvref` 등)는 번역하지 않음
- 숫자, 버전 정보, 링크 등은 원본 그대로 유지
**설명:** HTML 태그와 속성, ` `, `
`, `` 태그 내부의 텍스트는 번역하지 않았으며, C++ 관련 용어도 그대로 유지했습니다. 표의 내용은 숫자와 버전 정보로 구성되어 있어 번역이 필요하지 않습니다.
**변역 결과:** **변경된 부분:** - `FTM` → `기능 테스트 매크로` (Feature Testing Macro) - `Feature-testing macro:` → `기능 테스트 매크로:` **보존된 부분:** - 모든 HTML 태그와 속성 - ` `, `
`, `` 태그 내부의 텍스트 (해당 태그가 없으므로 적용되지 않음)
- C++ 관련 용어 (`std::atomic_ref`, `__cpp_lib_atomic_ref`, `P0019R8` 등)
- 숫자 값과 버전 정보
- 표시 형식과 스타일 속성
변경된 부분: - `Feature-testing macro:` → `기능 테스트 매크로:` - HTML 태그, 속성, C++ 관련 용어(std::type_identity, FTM, P0887R1 등)는 원본 그대로 유지 - 코드 내의 숫자와 버전 정보는 번역하지 않음 번역된 내용: - "and" → "및" - "Feature-testing macro:" → "기능 테스트 매크로:" - ` ` 태그 내의 `std::unwrap_ref_decay`와 `std::unwrap_reference`는 C++ 용어로 번역하지 않음 - HTML 태그와 속성, ` ` 태그 내의 텍스트는 원본 유지 - 나머지 모든 HTML 구조와 서식은 동일하게 유지 번역된 내용: - "Feature-testing macro:" → "기능 테스트 매크로:" - HTML 태그, 속성, ` `, `
`, `` 태그 내부의 내용은 번역하지 않고 원본 유지
- C++ 관련 용어(std::bind_front(), FTM, P0356R5 등)는 번역하지 않음
번역된 내용: - "Feature-testing macro:" → "기능 테스트 매크로:" - HTML 태그, 속성, ` `, `
`, `` 태그 내부의 내용은 번역하지 않고 원본 유지
- C++ 관련 용어(std::to_array(), FTM, P0325R4 등)는 번역하지 않음
- 숫자, 버전 정보 등은 원본 그대로 유지
변경된 부분: - `Feature-testing macro:` → `기능 테스트 매크로:` - `Enabled for Clang 12+` → `Clang 12+에서 활성화됨` C++ 관련 용어(`constexpr`, `std::vector`, `FTM`, `__cpp_lib_constexpr_vector`), HTML 태그 및 속성, 버전 번호 등은 원본 그대로 유지되었습니다.
C++20 기능

문서

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
std::endian ( FTM ) * P0463R1 8 7 19.22* 10.0.0*
std::make_shared() 를 배열 지원으로 확장  ( FTM ) * P0674R1 12 15 19.27* 14.0.3*
부동 소수점 원자 연산 ( FTM ) * P0020R6 10 18 19.22* 16.0.0*
동기화된 버퍼 ( std::basic_osyncstream )  ( FTM ) * P0053R7 11 18 19.29 (16.10)*
constexpr <algorithm> 및 <utility> 헤더에 대한 FTM ) * P0202R3 10 8 (부분적)
12
19.26* 10.0.1* (부분적)
13.0.0*
<complex> 에 대한 추가 constexpr ( FTM ) * P0415R1 9 7 (부분적)
16
19.27* 10.0.0* (부분적)
15.0.0*
std::memory_order 를 범위 있는 열거형으로 만들기 P0439R0 9 9 19.25* 11.0.3*
문자열 접두사 및 접미사 확인: string (_view) ::starts_with / ends_with ( FTM ) * P0457R2 9 6 19.21* 10.0.0*
operator<=> 및 <compare> 헤더에 대한 라이브러리 지원 ( FTM ) * P0768R1 10 7 (부분적)
12 (부분적)*
17
19.20* (부분적)
19.28 (16.9)*
13.0.0*
std::remove_cvref ( FTM ) * P0550R2 9 6 19.20* 10.0.0*
[[ nodiscard ]] 표준 라이브러리에서 P0600R1 9 7 (부분적)
16
19.13* (부분적)
19.22*
10.0.0* (부분적)
15.0.0*
std::move 사용 수치 알고리즘 에서 P0616R0 9 12 19.23* 13.0.0*
포인터를 원시 포인터로 변환하는 유틸리티 ( FTM ) * P0653R2 8 6 19.22* 지원
원자적 std::shared_ptr 및 std::weak_ptr ( FTM ) * P0718R2 12 19.27*
std::span ( FTM ) * P0122R7 10 7 19.26* 10.0.0*
Calendar 및 Time zone ( FTM ) * P0355R7 11 (부분적)*
13 (부분적)*
14
7 (부분적)
19 ( 부분적 )*
19.29 (16.10)* 10.0.0* (부분적)
<version> P0754R2 9 7 19.22* 10.0.0*
비순차 컨테이너 비교 P0809R0 Yes Yes 16.0* Yes
ConstexprIterator 요구사항  ( FTM ) * ( FTM ) * P0858R0 9 12 19.11* 13.0.0*
std::basic_string::reserve() 축소해서는 안 됨 P0966R1 11 8 19.25* 10.0.1*
원자적 비교-교환 (패딩 비트 포함) P0528R3 13 19.28 (16.8)*
std::atomic_ref ( FTM ) * P0019R8 10 19 19.28 (16.8)*
std::atomic_ref ( 기능 테스트 매크로 ) * P0019R8 10 19 19.28 (16.8)*
contains ( ) 연관 컨테이너의 멤버 함수, 예: std::map::contains() P0458R2 9 13 19.21* 13.1.6*
DR11: 조각별 생성 을 위한 보장된 복사 생략 P0475R1 9 예 19.29 (16.10)* 예
std::bit_cast() ( FTM ) * P0476R2 11 14 19.27* 14.0.3*
정수 2의 거듭제곱 2 연산 :

std::bit_ceil() , std::bit_floor() , std::bit_width() , std::has_single_bit() ( FTM ) *

P0556R3
P1956R1
9*
10*
9*
12*
19.25* *
19.27* *
19.28 (16.8)*
11.0.3* *
13.0.0* *
erase-like 알고리즘의 반환 값 개선  ( FTM ) * P0646R1 9 10 19.21* 12.0.0*
std::destroying_delete_t ( FTM ) * P0722R3 9 9 19.27* 11.0.3*
std::is_convertible ( FTM ) * P0758R1 9 9 19.23* 11.0.3*
std::shift_left/right 를 <algorithm> 에 추가 ( FTM ) * P0769R2 10 12 19.21* 13.0.0*
std::swap() 및 swap 관련 함수에 대한 Constexpr 지정 P0879R0 10 13 19.26* 13.1.6*
std::type_identity ( FTM ) * P0887R1 9 8 19.21* 10.0.1*
Concepts 라이브러리 ( FTM ) * P0898R3 10 13 19.23* 13.1.6*
constexpr 비교 연산자 for std::array P1023R0 10 8 19.27* 10.0.1*
std::unwrap_ref_decay 및 std::unwrap_reference ( FTM ) * P0318R1 9 8 19.21* 10.0.1*
std::bind_front() ( FTM ) * P0356R5 9 13 19.25* 13.1.6*
std::reference_wrapper 불완전한 타입을 위한 P0357R3 9 8 19.26* 10.0.1*
operator>>(basic_istream&, CharT*) 수정 P0487R1 11 8 19.23* 10.0.1*
char8_t 에 대한 라이브러리 지원 ( FTM ) * P0482R6 9 8 (부분적)
16
19.22* 10.0.1* (부분적)
15.0.0*
유틸리티 함수들 를 구현하여 uses-allocator construction 을 수행 P0591R4 9 16 19.29 (16.10)* 15.0.0*
DR17: std::variant 와 std::optional 은 복사/이동 triviality를 전파해야 함 P0602R4 8.3 8 19.11* 10.0.1*
DR17: 합리적인 std::variant 변환 생성자 P0608R3 10 9 19.29 (16.10)* *
19.42* *
11.0.3*
std::function 의 이동 생성자는 noexcept 이어야 합니다 P0771R1 7.2 6 19.22* 예
One Ranges Proposal ( FTM ) * P0896R4 10 13 (부분적)
15*
19.29 (16.10)* 14.0.3*
비균질 조회(heterogeneous lookup) for unordered associative containers ( FTM ) * P0919R3
P1690R1
11 12 19.23* (P0919R3)
19.25* (P1690R1)
13.0.0*
<chrono> zero() , min() , 그리고 max() 는 noexcept 여야 합니다 P0972R0 9 8 19.14* 10.0.1*
constexpr 에서 std::pointer_traits ( FTM ) * P1006R1 9 8 19.26* 10.0.1*
std::assume_aligned() ( FTM ) * P1007R3 9*
11
15 19.28 (16.9)* 14.0.3*
기본 초기화를 통한 스마트 포인터 생성 (예: make_unique_for_overwrite )  ( FTM ) * P1020R1
P1973R1
11*
12*
16 19.28 (16.9)* 15.0.0*
기타 constexpr 비트 ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1032R1 10 13 19.28 (16.8)* 13.1.6*
std::span 의 비교 연산자 제거 P1085R2 10 8 19.26* 10.0.1*
상태 저장 할당자 전파를 operator+(basic_string) 에 대해 더 일관성 있게 만들기 P1165R1 10 15 19.26* 14.0.3*
일관된 컨테이너 삭제, 예: std::erase(std::vector) , 또는 std::erase_if(std::map) ( FTM ) * P1209R0
P1115R3
9*
10*
8*
11*
19.25* *
19.27* *
10.0.1* *
12.0.5* *
표준 라이브러리 헤더 유닛 P1502R1 11 19.29 (16.10)*
polymorphic_allocator<> 어휘 타입으로서  ( FTM ) * P0339R6 9 16 19.28 (16.9)* 15.0.0*
std::execution::unseq ( FTM ) * P1001R2 9 17 19.28 (16.8)*
std::lerp() 및 std::midpoint() ( FTM ) * P0811R3 9 9 19.23* (부분적)
19.28 (16.8)*
11.0.3*
std::span 의 사용성 향상 P1024R3 10 9*
14
19.26* 11.0.3*
DR17: std::create_directory() 직관적으로 만들기 P1164R1 8.3 12 19.20* 13.0.0*
std::ssize() 및 부호 없는 범위에 대한 std::span ( FTM ) * P1227R2 10 9 19.25* 11.0.3*
( 비경계 ) 경계 배열을 위한 특성  ( FTM ) * P1357R1 9 9 19.25* 11.0.3*
std::to_array() ( FTM ) * P0325R4 10 10 19.25* 12.0.0*
std::basic_stringbuf 버퍼에 대한 효율적인 접근 P0408R7 11 17 19.29 (16.10)* 15.0.0*
레이아웃 - 호환성 및 포인터 - 상호 변환성 특성  ( FTM ) * ( FTM ) * P0466R5 12 19.29 (16.10)* *
비트 연산 : std ::

rotl() , rotr() , countl_zero() , countl_one() , countr_zero() , countr_one() , popcount() ( FTM ) *

P0553R4 9 9 19.25* *
19.28 (16.8)*
11.0.3*
수학 상수 ( FTM ) * P0631R8 10 11 19.25* 12.0.5*
텍스트 포맷팅 ( FTM ) * P0645R10 13 14 * *
17
19.29 (16.10)* 15.0.0*
std::stop_token 및 std::jthread ( FTM ) * P0660R10 10 17
(부분적)*

20*
19.28 (16.9)*
constexpr std::allocator 및 관련 유틸리티  ( FTM ) * P0784R7 10 12 19.29 (16.10)* 13.0.0*
constexpr std::string ( FTM ) * P0426R1
P1032R1
P0980R1
12 15 19.29 (16.10)*
19.30* *
14.0.3*
constexpr std::vector ( FTM ) * P1004R2 12 15 19.29 (16.10)*
19.30* *
14.0.3*
입력 range adaptors P1035R7 10 16 19.29 (16.10)* 15.0.0*
constexpr std::invoke() 및 관련 유틸리티 P1065R2 10 12 19.28 (16.8)* 13.0.0*
원자적 대기 및 알림, std::counting_semaphore , std::latch 및 std::barrier ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1135R6 11 11 19.28 (16.9)* 13.1.6*
std::source_location ( FTM ) * P1208R6 11 15*
(부분적)
16
19.29 (16.10)* 15.0.0*
표준 라이브러리에 <=> 추가 P1614R2 10 14*
(부분 구현)
17*
(부분 구현)
19
19.29 (16.10)* 13.1.6* (부분 구현)
constexpr std::atomic 및 std::atomic_flag 의 기본 생성자 ( FTM ) * P0883R2 10 13 19.26* 13.1.6*
constexpr 숫자 알고리즘에 대한 constexpr ( FTM ) * P1645R1 10 12 19.26* 13.0.0*
안전한 정수 비교 함수 ( FTM ) * P0586R2 10 13 19.27* 13.1.6*


C++20 기능


논문
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

이전 표준

참고 항목

기능 테스트 (C++20) C++ 언어 및 라이브러리 기능에 대응하는 매크로를 테스트하기 위한 전처리기 매크로 집합
C 문서 for 컴파일러 지원