C++26
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: 인코딩 불가능한 문자열 리터럴을 비정형으로 만들기 | P1854R4 | 14 | 14 | 16.0.0* | |||||||
| 평가되지 않은 문자열 | P2361R6 | 14 |
17 (부분적)*
18 |
16.0.0* | |||||||
기본 문자 집합에
@
,
$
, 그리고
`
추가
기본 문자 집합
|
P2558R2 | 15 | Yes | 16.0.0* | |||||||
| constexpr void*로부터의 캐스트 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 | ||||||||||
| = delete ( "reason" ) ; ( 기능 테스트 매크로 ) * | P2573R2 | 15 | 19 | ||||||||
| Variadic friends ( FTM ) * | P2893R3 | 15 | 20 | ||||||||
| DR98: 집계 초기화 에서 중괄호 생략 규칙 명확화 | P3106R1 | 예 | 17 | ||||||||
| DR20: 모듈 선언을 매크로로 허용하지 않음 | P3034R1 | 15 | |||||||||
| DR11: 사소한 무한 루프는 정의되지 않은 동작이 아님 | P2809R3 | 14 | 19 | ||||||||
| constexpr 배치 new ( FTM ) * ( FTM ) * | P2747R2 | 15 | 20 | ||||||||
| 구조화된 바인딩 선언을 조건으로 사용 ( FTM ) * | P0963R3 | 15 |
6
(부분적)*
21 |
||||||||
| 제약 조건 의 순서 지정 ( 폴드 표현식 포함) ( FTM ) * | P2963R3 | 19 | |||||||||
| 불완전한 타입에 대한 포인터 삭제는 올바르지 않은 형식이어야 함 | P3144R2 | 15 | 19 | 6.7 | |||||||
| 구조화된 바인딩 이 팩 을 도입할 수 있음 ( FTM ) * | P1061R10 | 21 | |||||||||
| constexpr 구조화된 바인딩 및 constexpr 변수에 대한 참조 | P2686R5 | 6.7 | |||||||||
| constexpr 예외 : [1] , [2] ( FTM ) * | P3068R6 | ||||||||||
| 옥스퍼드 가변 쉼표 | P3176R1 | 15 | 20 | ||||||||
| 사용 중단된 배열 비교 제거 | P2865R6 | 15 | 20 | ||||||||
#embed
(
기능 테스트 매크로
)
*
|
P1967R14 | 15 | 19 * | ||||||||
| 개념 및 변수 템플릿 템플릿 매개변수 ( FTM ) * | P2841R7 | ||||||||||
| 단순 재배치 가능성 ( FTM ) * | P2786R13 | 21 * | |||||||||
| 트리비얼 유니언 ( FTM ) * | P3074R7 | ||||||||||
| 관찰 가능 체크포인트 | P1494R5 | ||||||||||
| 계약 ( FTM ) * | P2900R14 | ||||||||||
|
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 | ||||
| std::to_string 및 std::to_wstring 의 산술 연산자 오버로드가 std::format 을 사용함 ( FTM ) * | P2587R3 | 14 | ||||
| 형식 검사 포맷 인수 ( FTM ) * | P2757R3 | 15 | ||||
| 포인터 서식 지정 ( FTM ) * | P2510R3 | 14 * | 17 * | 19.40* * | ||
| 해싱 지원 for std::chrono 값 클래스들 ( FTM ) * | P2592R3 | |||||
| <rcu> : Read-Copy Update ( FTM ) * | P2545R4 | |||||
| <hazard_pointer> : Hazard pointers ( FTM ) * | P2530R3 | |||||
| ADL-proof std::projected | P2538R1 | 14 * | 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 | |||||
| std::is_within_lifetime ( FTM ) * | P2641R4 | |||||
| 연관 컨테이너에 나머지 이종(heterogeneous) 오버로드 추가 ( FTM ) * | P2363R5 | |||||
| 비정렬 연관 컨테이너에서 std::weak_ptr 를 키로 사용할 수 있도록 함 ( FTM ) * | P1901R2 | |||||
| 파일 스트림의 네이티브 핸들 ( FTM ) * | P1759R6 | 14 | 18 | 16.0.0* | ||
| 문자열 스트림과 std::string_view 연동 ( FTM ) * | P2495R3 | 19 | ||||
| std::bitset 과 std::string_view 인터페이싱 ( FTM ) * | P2697R1 | 18 | 16.0.0* | |||
| <cmath> 및 <complex> 에 대한 추가 constexpr 지원 ( FTM ) * ( FTM ) * | P1383R2 | 4.6 (부분적)* | ||||
| 비율에 새로운 2022 SI 접두어 추가: std::quecto , std::ronto , std::ronna , 및 std::quetta ( FTM ) * | P2734R0 | 14 | 17 * | |||
| std::function_ref : 타입 삭제된 호출 가능 참조 ( FTM ) * | P0792R14 | |||||
| std::copyable_function ( FTM ) * | P2548R6 | 16 | ||||
| std::bind_front , std::bind_back , 그리고 std::not_fn 가 NTTP 호출 가능 객체에 적용됨 ( FTM ) * ( FTM ) * ( FTM ) * | P2714R1 | |||||
| std::submdspan() ( FTM ) * |
P2630R4
P3355R1 |
|||||
| 독립형 언어: 선택 사항 ::operator new | P2013R5 | N/A | ||||
| 독립 실행 환경 std::char_traits , std::errc 및 다음 헤더의 기능들: <charconv> , <cstdlib> , <cstring> , <cwchar> ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2338R4 | N/A | ||||
| 추가 독립 실행형 기능들 ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2198R7 | 해당 없음 | ||||
| 포화 산술 ( FTM ) * | P0543R3 | 14 | 18 | 16.0.0* | ||
| <debugging> : 디버깅 지원 ( FTM ) * |
P2546R5
P2810R4 |
|||||
| <linalg> : BLAS 기반의 자유 함수 선형 대수 인터페이스 ( FTM ) * |
P1673R13
P3050R2 P3222R0 |
|||||
| assert() 매크로 사용자 친화적으로 만들기 | P2264R7 | |||||
| 런타임 형식 문자열 ( FTM ) * | P2918R2 | 14 | 18 | 16.0.0* | ||
| std::span 이니셜라이저 리스트에 대한 ( FTM ) * | P2447R6 | 15 | 18 | 16.0.0* | ||
| std::span::at() ( FTM ) * | P2821R5 | 14 | 18 | 16.0.0* | ||
| std::complex 에 튜플 프로토콜 추가됨 ( FTM ) * | P2819R2 | 15 | 19 | |||
| std::generate_canonical 에 대한 새로운 명세 | P0952R2 | 19.42* | ||||
| 사용 중단된 typedef std::allocator::is_always_equal 제거 | P2868R3 | 15 | 18 | 16.0.0* | ||
| 인수를 받지 않는 std::basic_string::reserve() 함수 오버로드 제거 | P2870R3 | 18 | 16.0.0* | |||
| 사용 중단된 유니코드 변환 패싯 제거 ( <codecvt> ) | P2871R3 | 18 | 16.0.0* | |||
| 독립형: std::strtok 제거 ( FTM ) * | P2937R0 | 14 | 19.40* | |||
| 독립형 라이브러리: 부분 클래스들 ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2407R5 | 14 | 19.42* | |||
| 독립형 라이브러리: std::inout , std::expected , std::span ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2833R2 | 14 | 19.42* | |||
| DR23: std::basic_const_iterator 는 해당 기본 타입의 변환 가능성을 따라야 함 ( FTM ) * |
P2836R1
P2950R0 |
14 | 19.40* | |||
| DR20: std::make_format_args 이제 전달 참조 대신 좌측값 참조만 수용합니다 | P2905R2 | 14 | 18 | 19.40* | 16.0.0* | |
| DR20: 코드 유닛을 정수로 포맷팅하는 문제 수정 ( FTM ) * | P2909R4 | 13.3 | 18 | 19.40* | 16.0.0* | |
| views::concat ( FTM ) * | P2542R8 | 15 | ||||
| 문자열과 strings 및 string views 의 연결 ( FTM ) * | P2591R5 | 15 | 19 | |||
| 알고리즘에 대한 목록 초기화 활성화 algorithms ( FTM ) * |
P2248R8
P3217R0 |
15 | ||||
| std::ranges::generate_random ( FTM ) * | P1068R11 | |||||
| 비교 연산자 for std::reference_wrapper , and constraints for comparisons of std::pair , std::tuple , std::optional , and std::variant ( FTM ) * ( FTM ) * | P2944R3 | 14 | 19 (부분적) * | |||
| 패딩된 mdspan 레이아웃 ( FTM ) * | P2642R6 | |||||
| 정수 상수를 사용한 std::span 및 std::mdspan 의 새로운 CTAD | P3029R1 | 19 | ||||
| 원자적 최댓값 및 최솟값 ( FTM ) * | P0493R5 | |||||
| std::formatter<std::filesystem::path> ( FTM ) * | P2845R8 | |||||
| std::println() 로 빈 줄 출력하기 ( FTM ) * | P3142R0 | 14 * | 19 * | 19.41* * | ||
| 비사용 중단화 std::polymorphic_allocator::destroy | P2875R4 | 15 | 19.41* | |||
| 사용 중단된 strstreams 제거 | P2867R2 | 19 | ||||
| 사용 중단된 std::shared_ptr 원자적 접근 API 제거 | P2869R4 | |||||
| 제거 중 std::wstring_convert | P2872R3 | 19 | ||||
| DR23: 효율적인 구현을 허용하는 std::print ( FTM ) * |
P3107R5
P3235R3 |
19.43* | ||||
| 실행 제어 라이브러리 ( FTM ) * |
P2300R10
P3396R0 |
|||||
| std::inplace_vector : 고정된 용량을 가진 동적 크기 조정 벡터 ( FTM ) * | P0843R14 | |||||
| std::philox_engine : 카운터 기반 난수 엔진 ( FTM ) * | P2075R6 | |||||
| std::optional 범위 지원 ( FTM ) * | P3168R2 | |||||
| std::is_virtual_base_of : 가상 기본 클래스 검출을 위한 타입 특성 ( FTM ) * | P2985R0 | 15 | 20 | |||
| std::dims for std::mdspan ( FTM ) * | P2389R2 | 19 | ||||
| DR11: std::ignore 의 타입에 대한 공식 명세 | P2968R2 | 15 | 19 | 19.42* | ||
| DR20: 간접 호출 가능 개념들에서 공통 참조 요구사항 제거 ( FTM ) * | P2997R1 | 15 | 19 | 19.42* | ||
| std::is_trivial 및 std::is_trivial_v 사용 중단 | P3247R2 | 15 | 21 | |||
| DR20: 알고리즘 함수 객체 | P3136R1 | Yes | 14 | 19.39* | 14.0.3* | |
| std::ranges::cache_latest_view ( FTM ) * | P3138R5 | 15 | ||||
| std::expected 의 동등 연산자 제약 ( FTM ) * | P3379R0 | 15 | ||||
| std::aligned_accessor : 포인터 초과 정렬을 표현하는 std::mdspan 액세서 ( FTM ) * | P2897R7 | 21 | ||||
| std::is_sufficiently_aligned : 포인터의 정렬 사전 조건을 검사함 ( FTM ) * | P2897R7 | 21 | ||||
| std::atomic_ref::address() ( FTM ) * | P2835R7 | |||||
| std::atomic_ref::address() ( FTM ) * | P2835R7 | |||||
| DR11/20: std::atomic 및 std::atomic_ref 에서의 cv 한정 타입 | P3323R1 | 19.44* | ||||
| constexpr std::atomic 및 std::atomic_ref ( FTM ) * | P3309R3 | |||||
| constexpr 특수화된 메모리 알고리즘 을 위한 ( FTM ) * |
P3508R0
P3369R0 |
15 | ||||
| <stdbit.h> 및 <stdckdint.h> | P3370R1 | 15 | ||||
| <simd> : 데이터 병렬 타입 ( FTM ) * ( FTM ) * |
P1928R15
P3430R3 P3441R2 P3287R3 P2663R7 P2933R4 |
|||||
| 실행 환경 을 생성하기 위한 유틸리티 | P3325R5 | |||||
| constexpr 예외 타입에 대한 constexpr 지원, 예를 들어 std::bad_alloc , std::bad_cast 등. ( FTM ) * |
P3068R6
P3378R2 |
|||||
| 사소한 재배치 가능성 특성과 연산 ( FTM ) * | P2786R13 | |||||
무력화 및 사용 중단
std::memory_order::consume
|
P3475R1 | |||||
| std::monostate 를 <utility> 에 추가 | P0472R3 | 15 | 21 | 19.50* | ||
| std::indirect ( FTM ) * | P3019R14 | |||||
| std::polymorphic ( FTM ) * | P3019R14 | |||||
|
추가
constexpr
컨테이너 및 컨테이너 어댑터 지원:
std::deque
,
std::flat_map
,
std::flat_multimap
,
std::flat_set
,
std::flat_multiset
,
std::forward_list
,
std::list
,
std::map
,
std::multimap
,
std::queue
,
std::priority_queue
,
std::set
,
std::multiset
,
std::stack
,
std::unordered_map
,
std::unordered_multimap
,
std::unordered_set
, 및
std::unordered_multiset
|
P3372R3 | |||||
| constexpr std::inplace_vector 비트리비얼 타입을 위한 ( FTM ) * | P3074R7 | |||||
| std::ranges::to_input_view ( FTM ) * | P3137R3 | 15 | ||||
| std::ranges::approximately_sized_range 및 std::ranges::reserve_hint ( FTM ) * | P2846R6 | |||||
| <hive> : 삭제된 요소의 메모리 위치를 재사용하는 버킷 기반 컨테이너 ( FTM ) * | P0447R28 | |||||
| <contracts> : 계약 위반 처리 지원 ( FTM ) * | P2900R14 | |||||
| 표준 라이브러리 강화 ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P3471R4 | 15 (부분적)* | 19.44* (부분적)* | |||
|
독립형 라이브러리:
<algorithm>
,
<numeric>
,
<random>
, (
<execution>
,
<memory>
)
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * |
P2976R1 | |||||
| DR20: 연속 반복자를 포인터로 변환 | P3349R0 | 15 | ||||
|
C++26 기능 |
문서 |
GCC libstdc++
|
Clang libc++
|
MSVC STL
|
Apple Clang*
|
*
- 별표로 표시된 셀 위에 마우스를 올리면
*
추가 팝업 노트를 볼 수 있습니다.
DR
nn
- "DR" 뒤의 숫자
nn
은 결함 보고서가 적용되는 대상 C++ 개정판을 나타냅니다. 예: DR20 → C++20.
외부 링크
| 1. | C++26 - 위키백과 |