C++26
cppreference.net에서
< cpp
C++ 표준의 차세대.
C++26에 대한 현재 IS 일정: P1000R6 (2024-05-14).
| 이 섹션은 불완전합니다 |
새로운 언어 기능
새로운 라이브러리 기능
새로운 모듈
새로운 헤더
- <contracts>
- <debugging>
- <hazard_pointer>
- <hive>
- <inplace_vector>
- <linalg>
- <rcu>
- <simd>
- <text_encoding>
태그 내부)를 포함하고 있으며, 이러한 요소들은 번역에서 제외하도록 지시받았습니다. 따라서 원본 텍스트에서 번역이 필요한 실제 한국어 콘텐츠가 존재하지 않아, 출력 결과가 입력과 동일하게 유지되었습니다.
C 호환성 헤더:
폐기된 기능
제거된 기능
| 이 섹션은 불완전합니다 |
사용 중단된 기능
| 이 섹션은 불완전합니다 |
결함 보고서
컴파일러 지원
주요 문서: C++26 컴파일러 지원
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: 인코딩할 수 없는 문자열 리터럴을 ill-formed로 만들기 | P1854R4 | 14 | 14 | 16.0.0* | |||||||
| 비평가 문자열 | P2361R6 | 14 | 17 (부분)* 18 |
16.0.0* | |||||||
추가 @, $, 및 `을/를 기본 문자 집합
|
P2558R2 | 15 | 예 | 16.0.0* | |||||||
Constexpr 캐스트 from void* (FTM)*
|
P2738R1 | 14 | 17 | ||||||||
| DR20: 표준 속성의 무시 가능성에 대해 | P2552R3 | 15 | 예 | ||||||||
| DR11: 중괄호 초기화 목록을 위한 정적 저장소 | P2752R3 | 14 | |||||||||
| 사용자 생성 static_assert 메시지 (FTM)* | P2741R3 | 14 | 17 | ||||||||
| 이름이 없는 자리표시자 변수 (FTM)* | P2169R4 | 14 | 18 | ||||||||
| 팩 인덱싱 (FTM)* | P2662R3 | 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 | ||||||||
| 가변 인자 friend (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 |
||||||||
| 제약 조건 순서 지정fold 표현식 포함 (FTM)* | P2963R3 | 19 | |||||||||
| 불완전한 타입에 대한 포인터 삭제는 | ill-formed여야 함 | P3144R2 | 15 | 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 | ||||||||||
| 계약 어설션에서 splice 표현식의 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< 함수의 성공 또는 실패 테스트> ( FTM)*P2497R0 | 14 | 18 | 16.0.0* | std::text_encoding | ||
| : 텍스트 인코딩 식별 ( FTM)*P1885R12 | P2862R1 14 |
Arithmetic overloads of | ||||
| std::to_string and std::to_wstring use std::format ( FTM)*P2587R3 | 14 | 형식 인수 유형 검사 | ||||
| ( FTM)*P2757R3 | 15 | 포인터 서식 지정 | ||||
| ( FTM)*P2510R3 | 14 | *17 | *19.40* | *std::chrono | ||
| 값 클래스에 대한 해싱 지원 (FTM) *P2592R316 rcu | : 읽기-복사 갱신 | ( | ||||
| <FTM>)* P2545R4hazard_pointer: 위험 포인터 ( | FTM | |||||
| <)>*P2530R3 ADL-내성 std::projectedP2538R114 | * | |||||
| 18* | 19.38* | *16.0.0* | constexpr 안정 정렬 ( | FTM) | * | |
| P2562R1 15 21 멤버 std::basic_format_arg::visit() | ( | FTM | ) | |||
| *P2637R3 15 19 멤버 std::variant::visit() | ( | FTM | ) | |||
| *P2637R3 15 18 std::is_within_lifetime ( | FTM | ) | * | |||
| P2641R4 P3450R122 (부분)*연관 컨테이너를 나머지 이종 오버로드로 확장 ( | FTM ) |
* | ||||
| P2363R5 16 std::weak_ptr을 비순차 연관 컨테이너의 키로 사용할 수 있도록 설정 ( | FTM | ) | ||||
| *P1901R216 파일 스트림의 네이티브 핸들 (FTM) | * | P1759R6 | ||||
| 14 18 16.0.0*문자열 스트림과 std::string_view | 의 인터페이싱 | ( | FTM | ) | ||
| *P2495R3 16 19 std::bitset과 | std::string_view | 의 인터페이싱 | ( | |||
| FTM)*P2697R1 16 18 16.0.0*더 많은 | 을(를) | cmath | 및 | |||
complexconstexpr에 대해< (>FTM<)> * (FTM) *P1383R24.6 (부분)*비율에 새로운 2022 SI 접두사 추가:
|
std::quecto | , | ||||
| std::ronto, std::ronna 및 std::quetta (FTM) *P2734R014 17 | * | std::function_ref | : 타입 지워진 호출 가능 참조 ( | |||
| FTM) *P0792R14P3961R116 | std::copyable_function ( |
FTM | ||||
| ) *P2548R616 std::bind_front | , | std::bind_back | ||||
| 및 std::not_fn을 NTTP 호출 가능 개체로 (FTM) * (FTM) * (FTM) *P2714R116 std::submdspan() |
( | FTM | ||||
| ) *P2630R4P3355R1P3663R3 | P3982R2 16 프리스탠딩 언어: 선택적 ::operator new |
P2013R5 | ||||
| 19.38*프리스탠딩 | std::char_traits | , | ||||
| std::errc 및 다음의 기능: charconv, cstdlib<, >cstring<, >cwchar< (>FTM<)> * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) *P2338R419.38*더 많은 프리스탠딩 기능 | ( | FTM | ||||
| ) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) *P2198R719.38*포화 산술 |
( | FTM | ||||
| ) *P0543R3P4052R014 | 16 * |
18
16.0.0*디버깅 |
: 디버깅 지원 | ( | ||
| <FTM>)* P2546R5P2810R416* | linalg : BLAS 기반의 자유 함수 선형 대수 인터페이스 |
(FTM | ||||
| <)>* P1673R13P3050R2P3222R0P3371R5 | assert() 매크로를 사용자 친화적으로 만들기 P2264R7 |
|||||
| Yes*동적 형식 문자열 | ( | FTM) | ||||
| * P2918R2P3953R314* | 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 | |||
| 는 이제 전달 참조 대신 lvalue 참조만 허용합니다 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 22 19 (부분)*패딩된 mdspan 레이아웃 ( | FTM | ) | * P2642R616 |
|||
| 정수 상수를 사용한 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의 비권장 철회 | P2875R414.3 | *15 | |||
| 19.41*더 이상 사용되지 않는 strstreams 제거 | P2867R2 | 19 더 이상 사용되지 않는 | std::shared_ptr | 원자 접근 API 제거 | ||
| P2869R4 | std::wstring_convert | |||||
| 제거P2872R319 | DR23: | |||||
| std::print의 효율적인 구현 허용 | ( | FTM | ||||
| )* P3107R5P3235R316 19.43* | constexpr 배치 new ( |
FTM | ) | |||
| *P2747R2 15 20 실행 제어 라이브러리 ( | FTM | ) | * | |||
| P2300R10 P3388R3P3396R1P3433R1P3481R5 | P3570R2 P3682R0 P3887R1 추가 실행 제어 라이브러리 수정 P3373R4 P3826R5 P3986R1 P4154R0 |
|||||
| P4159R0std::inplace_vector: 고정 용량을 가진 동적 크기 조정 벡터 | ( FTM ) * P0843R14 |
|||||
| P3981R2P4022R0 16 std::philox_engine: 카운터 기반 난수 엔진 ( | FTM ) * |
P2075R6 | ||||
| 16 std::optional 범위 지원 (FTM) | * | P3168R2 | ||||
| P3913R116 22 (부분)*std::is_virtual_base_of: 가상 기본 클래스 감지를 위한 타입 특성 ( | FTM ) |
* | P2985R0 | |||
| 15 20 std::dims std::mdspan을 위한 | ( | FTM | ) | |||
| *P2389R216 19 DR11: std::ignore의 타입에 대한 공식 명세 | P2968R2 | 15 | 19 | |||
| 19.42*DR20: 간접적으로 호출 가능한 개념에서 공통 참조 요구 사항 제거 | ( | FTM | ) | * | ||
| P2997R1 15 19 19.42* | std::is_trivial | 및 | std::is_trivial_v | 비권장 | ||
| P3247R215 21 DR20: 알고리즘 함수 객체 | P3136R1 | Yes | Yes | |||
| 19.39* | Yes | std::ranges::cache_latest_view | ( | FTM | ) | |
| * P3138R515 std::expected | 동등 연산자 제약 | ( | ||||
| FTM) * P3379R015 22 std::aligned_accessor | : 포인터 초과 정렬을 표현하는 | std::mdspan | 접근자 | |||
| (FTM)* P2897R716 std::is_sufficiently_aligned: 포인터의 정렬 전제 조건 확인 | ( | FTM | ||||
| )* P2897R716 std::atomic_ref::address() ( | FTM | ) | ||||
| * P2835R7P3936R116 (부분)*22 (부분)* | DR11/20: std::atomic |
및 | std::atomic_ref | |||
| 의 cv 한정 타입P3323R116 19.44* | constexpr | std::atomic | 및 | |||
| std::atomic_ref (FTM) *P3309R3constexpr 특수화 메모리 알고리즘 ( | FTM | |||||
| )* P3508R0P3369R015 stdbit.h | 및 stdckdint.h |
( | ||||
| <FTM>)<*> (FTM)* P3370R115*16 | simd | : 데이터 병렬 타입 ( FTM |
||||
| <)>*P1928R15 P3430R3P2876R3P3691R1P3922R1 | P3690R1 P3932R0 P4012R1 16 (부분) * SIMD 수학 연산 P1928R15 P3844R4 |
실행 환경 생성을 위한 유틸리티P3325R5 | ||||
| constexpr 예외 타입, 예: | std::bad_alloc , |
|||||
| std::bad_cast 등 | ( | |||||
| FTM)*P3068R6P3378R2 P3842R216 std::simd::chunkP3441R2 | 16
SIMD 비트 연산 ( |
FTM | ||||
| ) | * | P2933R4 | ||||
| std::simd의 인터리브된 std::complex 값 지원 | ( | |||||
| FTM)*P2663R7 무력화 및 비권장P3475R1std::monostate | 를 | |||||
utilitystd::memory_order::consume
|
에 배치 | |||||
| P0472R315 21 <19.50*> | std::indirect | ( | FTM | ) | ||
| * P3019R1416 std::polymorphic ( | FTM | ) | ||||
| * P3019R1416 더 많은 constexpr 컨테이너 및 어댑터 ( | FTM | ) | ||||
| * (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* |
P3372R3 | 16 (부분)* | 21 (부분)* 22 (부분)* |
|||
| 비사소한 타입을 위한 constexpr std::inplace_vector ( FTM)*P3074R7 | std::ranges::as_input_view | |||||
| ( FTM)*P3137R3 | P3828R1 15 |
*16 *std::ranges::approximately_sized_range |
||||
| 및 std::ranges::reserve_hint ( FTM)*P2846R6 | hive | |||||
| <: 지워진 요소의 메모리 위치를 재사용하는 버킷 기반 컨테이너> ( FTM)*P0447R28 | 관찰 가능한 체크포인트에 대한 라이브러리 지원 | |||||
| ( FTM)*P1494R5 | P3641R0 16 |
계약 | ||||
| <: 계약 위반 처리 지원> ( FTM)*P2900R14 | P3819R0 16 |
표준 라이브러리 강화 | ||||
| P3471R4 | P3697R1 P3878R1 15 |
(부분)*19.44* | (부분)*19.50* (부분)*프리스탠딩 라이브러리: | |||
| algorithm<, >execution<, >memory<, >numeric< 및 > random< (> FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)*P2976R1 |
DR20: 연속 반복자를 포인터로 변환 | |||||
| P3349R0 | 15 | 19.51* | meta | |||
| <: 리플렉션 라이브러리 지원> ( FTM)*P2996R13 | P3394R4 P3293R3 P3096R12 P3795R2 P4156R0 16 (부분) |
*리플렉션에서 오류 처리를 위한 constexpr 예외 | ||||
| ( FTM)*P3560R2 | 16 | std::define_static_object | ||||
| , std::define_static_array, std::define_static_string ( FTM)*P3491R3 | 16 | std::simd::basic_vec | ||||
| 및 std::simd::basic_mask는 범위 타입입니다 P3480R6 | 16 | std::optional | ||||
| T< (&> FTM)* ( FTM)*P2988R12 | P3836R2 16 |
22 | std::string::subview() | |||
| 및 std::string_view::subview() ( FTM)*P3044R2 | 16 | 22 | constexpr | |||
| std::shared_ptr 및 관련 ( FTM)*P3037R6 | 코루틴 태스크 타입 | |||||
| ( FTM)*P3552R3 | P3980R1 P3927R2 P3941R4 P4151R1 비동기 범위: 비순차적 동시성을 위한 범위 생성 |
|||||
| ( FTM)*P3149R11 | P3815R1 병렬 스케줄러 |
|||||
| ( FTM)*P2079R10 | P3804R2 constexpr 예외를 사용한 고품질 송신자 진단 |
|||||
| P3557R3 | execution::write_env | |||||
| 및 execution::unstoppable 송신자 어댑터 P3284R4 | std::views::indices | |||||
| ( FTM)*P3060R3 | 16 | 병렬 범위 알고리즘 | ||||
| ( FTM)*P3179R9 | P3709R2 원자 부동소수점 최소/최대 |
|||||
| ( FTM)*P3008R6 | 원자 축소 연산 | |||||
| ( FTM)*P3111R8 | SIMD 순열 연산 | |||||
| ( FTM)*P2664R11 | std::mdspan::at() | |||||
| P3383R3 | 16 | std::exception_ptr_cast() | ||||
| ( FTM)*P2927R3 | P3748R0 P3981R2 16 (부분) |
*표준화된 constexpr 타입 정렬 | ||||
| ( FTM)*P2830R10 | P3778R0 P4140R0 16 |
std::constant_wrapper | ||||
| ( FTM)*P2781R9 | P3978R3 16 |
23 | std::apply | |||
| 변경: std::apply_result, std::is_applicable 및 std::is_nothrow_applicable ( FTM)*P1317R2 | ||||||
| std::promise 및 std::packaged_task에서 타입 지워진 할당자 사용을 일관되게 만들기 P3503R3 | 17 | 19.51* | std::filesystem::path::display_string() | |||
| 및 std::filesystem::path::native_encoded_string() ( FTM)*P2319R5 | ||||||
| std::istream::ignore()를 덜 놀랍게 만들기 P3223R2 | 16 | 19.50* | DR11: | |||
| std::valarray 및 std::initializer_list에 대한 begin/end의 불일치 해결 (FTM)* (FTM)* | P3016R6 | 19.51* | ||||
| std::flat_meow 수정 (FTM)* (FTM)* | P3567R2 | 22 | 19.51* | |||
| std::integer_sequence를 구조적 바인딩 및 확장문에서 사용 가능하게 만들기 (FTM)* | P1789R3 | 16 | 22 | |||
| constexpr 텍스트 서식 지정 (FTM)* | P3391R2 | |||||
| std::start_lifetime (FTM)* | P3726R2 | |||||
| std::is_structural: 구조적 타입 감지를 위한 타입 특성 ( FTM)*P3856R8 | 16 | std::constant_wrapper | ||||
| 가 std::function_ref 생성자 인수로 사용됨 P3948R1 | 16 | 난수 생성에서 | ||||
signed char 및 unsigned char |
지원 | |||||
| P4037R1 기능 매크로를 사용한 계약 위반 처리기의 구현 정의 대체 가능성 감지 (FTM)* |
P3886R0 | 16 | ||||
| DR20: 뷰 반복자/센티널의 사용자 정의 생성자를 비공개로 만들기 | P3059R2 | Yes | ||||
| DR20: 더 안전한 사용을 위한 필터 뷰 확장 (FTM)* | P3725R3 | 16 | ||||
| C++26 기능 |
문서 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
* - 별표 *로 표시된 셀 위에 마우스를 올리면 추가 팝업 노트를 볼 수 있습니다.
DRnn - "DR" 뒤의 숫자 nn은 결함 보고서가 적용되는 대상 C++ 개정판을 나타냅니다(예: DR20 → C++20).
외부 링크
| 1. | C++26 - 위키백과 |