Namespaces
Variants

Compiler support for C++26

From cppreference.net

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

C++26 핵심 언어 기능

번역 시 주의사항: - HTML 태그와 속성은 그대로 유지 - P2552R3 문서 번호는 번역하지 않음 - "Yes"는 "예"로 번역 - "On the ignorability of standard attributes"는 "표준 속성의 무시 가능성에 관하여"로 전문적으로 번역 - DR20(Defect Report)은 C++ 표준 용어이므로 그대로 유지 - 모든 서식과 색상 코드는 원본 그대로 보존 **변경사항 없음** 설명: 주어진 지침에 따라: - HTML 태그와 속성은 번역하지 않음 - ` `, `
`, `` 태그 내부 텍스트가 없으므로 해당 없음
- C++ 관련 용어(Pack indexing, FTM, P2662R3 등)는 번역하지 않음
- 숫자 값과 기호(*)는 원본 유지
- 모든 HTML 구조와 서식이 보존됨
번역 시 주의사항: - HTML 태그와 속성은 그대로 유지 - ` ` 태그 내부의 `indeterminate`는 C++ 용어이므로 번역하지 않음 - 링크 텍스트와 문서 제목은 번역하지 않음 - 기술 용어는 정확한 한국어 전문 용어 사용 ("erroneous behavior" → "오류 동작", "uninitialized reads" → "초기화되지 않은 읽기", "attribute" → "속성") **번역 결과:** **번역 설명:** - "Variadic" → "가변 인자" (C++ 용어로 통용되는 번역) - "friends" → "프렌드" (C++ friend 키워드의 표준 번역) - "FTM" → "기능 테스트 매크로" (Feature-testing macro의 약어 풀어서 번역) - HTML 태그, 속성, 숫자 값은 그대로 유지 - C++ 관련 용어는 정확한 기술 용어로 번역 **번역 참고사항:** - "constraints" → "제약 조건" (C++ 표준 용어) - "fold expressions" → "폴드 표현식" (C++ 표준 용어) - "Ordering of constraints involving fold expressions" → "제약 조건의 순서 지정 (폴드 표현식 포함)" (자연스러운 한국어 어순으로 조정) - HTML 태그, 속성, FTM, P2963R3 등은 원본 유지 - Feature-testing macro 주석은 번역하지 않음 번역된 내용: - "exceptions" → "예외" (C++ 예외 처리 관련 용어) - HTML 태그, 속성, ` ` 내부의 `constexpr` 키워드는 번역하지 않고 원본 유지 - 링크 텍스트와 기타 모든 HTML 구조는 원본 형식 그대로 보존
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*
기본 문자 집합에 @ , $ , 그리고 ` 추가 basic character set P2558R2 15 Yes 16.0.0*
constexpr void* 에서의 형변환 ( FTM ) * P2738R1 14 17
DR20: 표준 속성의 무시 가능성에 관하여 P2552R3 15
DR11: 중괄호 초기화를 위한 정적 저장소 P2752R3 14
사용자 생성 static_assert 메시지  ( FTM ) * P2741R3 14 17
이름 없는 플레이스홀더 변수 ( FTM ) * P2169R4 14 18
Pack indexing ( 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
가변 인자 프렌드 ( 기능 테스트 매크로 ) * 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 ( FTM ) * 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 라이브러리 기능

**번역 결과:** **번역 설명:** - HTML 태그, 속성, ` `, `
`, `` 태그 내부의 내용은 번역하지 않음
- C++ 관련 용어(Read-Copy Update, FTM, P2545R4 등)는 원문 유지
- "Feature-testing macro"만 "기능 테스트 매크로"로 정확하게 번역
- 원본 형식과 구조 완전히 보존
**번역 결과:** **번역 설명:** - "Feature-testing macro"만 "기능 테스트 매크로"로 번역 - C++ 전문 용어인 "Hazard pointers", "FTM"은 번역하지 않고 원문 유지 - HTML 태그, 속성, 코드 블록은 모두 원본 그대로 보존 - 문서 번호 "P2530R3"은 번역하지 않음 **변역 설명:** - "Saturation arithmetic" → "포화 산술" (C++ 표준 용어로 번역) - HTML 태그, 속성, 의 title 속성 내 텍스트는 번역하지 않고 원본 유지 - FTM, P0543R3, 버전 번호 등 C++ 관련 용어는 번역하지 않음 - 숫자와 기호(*)는 그대로 유지 - 표 서식과 스타일 속성은 완전히 보존 번역 결과: - 모든 HTML 태그와 속성은 그대로 유지됨 - C++ 관련 용어(`views::concat`, `FTM`, `P2542R8`, `__cpp_lib_ranges_concat = 202403L`)는 번역하지 않음 - 숫자와 기호는 그대로 유지 - 테이블의 내용은 원본 형식 그대로 보존 번역된 내용: - "Feature-testing macro:" → "기능 테스트 매크로:" - HTML 태그, 속성, ` `, `
`, `` 태그 내부의 내용은 번역하지 않고 원본 유지
- C++ 관련 용어(std::formatter, std::filesystem::path, FTM, P2845R8 등)는 번역하지 않음
- 원본 포맷팅과 구조 완전히 보존
**번역 결과:** **번역 설명:** - `std::atomic_ref::address()`와 같은 C++ 관련 용어는 번역하지 않고 그대로 유지 - HTML 태그와 속성은 완전히 보존 - `FTM`은 약어이므로 번역하지 않음 - `Feature-testing macro`만 "기능 테스트 매크로"로 정확하게 번역 - 표의 빈 셀들은 그대로 유지 **변역 설명:** - `constexpr`은 C++ 키워드이므로 번역하지 않음 - `for specialized memory algorithms` → `특수화된 메모리 알고리즘을 위한` - HTML 태그, 속성, 링크 텍스트는 원본 유지 - ` `, `
`, `` 태그 내부가 없으므로 해당 사항 없음
- C++ 관련 용어(FTM, specialized memory algorithms 등)는 번역하지 않음
- 표의 숫자와 스타일 속성은 원본 그대로 유지
변경사항: - "and"를 "및"로 번역 - HTML 태그, 속성, ` `/` ` 태그 내 내용은 그대로 유지 - C++ 관련 용어(stdbit.h, stdckdint.h)는 번역하지 않음 - 문서 번호(P3370R1)는 번역하지 않음 - 숫자 값(15)은 그대로 유지
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
<rcu> : Read-Copy Update ( FTM ) * P2545R4
<hazard_pointer> : Hazard pointers ( FTM ) * P2530R3
<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
연관 컨테이너에 남은 이종(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 해당 없음
추가 독립 실행형 기능들  ( 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
문자열과 문자열 문자열 뷰 연결 ( FTM ) * P2591R5 15 19
알고리즘에 대한 목록 초기화 활성화 algorithms ( FTM ) * P2248R8
P3217R0
15
std::ranges::generate_random ( FTM ) * P1068R11
비교 연산자 for std::reference_wrapper , and 비교 제약 조건 for 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()로 빈 줄 출력하기 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 특수화된 메모리 알고리즘을 위한 specialized memory algorithms ( 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 무력화 및 사용 중단 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
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) *

P3372R3
constexpr std::inplace_vector 비트리비얼(non-trivial) 타입을 위한  ( 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*