C++26

C++ 언어 버전 **C++26**은 C++23에 이어 C++ 프로그래밍 언어를 위한 국제 표준화 기구(ISO) 및 국제전기기술위원회(IEC) 14882 표준 버전의 비공식 이름이다. 이 버전의 현재 작업 초안은 N5014이다.website=Open Standards C++ 표준 위원회에서 표준에 제안되고 채택된 문서와 2025년 6월 불가리아 소피아 및 온라인에서 개최된 표준화 회의록이 공개되어 있다.access-date=6 September 2025 초안의 문구는 기능적으로 완성되었으며,access-date=6 September 2025 국제 의견 투표를 위해 발송되고 있다.access-date=6 September 2025 2025년 11월 하와이 코나에서 열린 표준화 회의에서 일부 투표 의견을 해결한 후, C++ 표준 위원회는 투표 의견 해결을 완료하고 초안을 기술적으로 확정하며, 2026년 3월 런던에서 열리는 다음 표준화 회의에서 최종 승인 투표를 위해 초안을 발송할 것으로 예상된다.access-date=6 September 2025 일부 곧 출시될 기능을 구현한 실험적이고 표준 컴파일러는 Compiler Explorer를 통해 짧은 코드 스니펫에서 시도할 수 있다. 일부 컴파일러 변형은 "constexpr containers and adaptors"를 위한 "P3372"와 같이 구현하는 새로운 기능을 제안하는 문서의 짧은 식별자로만 구별된다.
# 기능
C++26에 채택된 변경 사항은 다음과 같다.
## 언어
*컴파일 시점 반영.website=isocpp.org (댄 카츠가 개발한 클랭의 실험적인 포크는 현재 이 기능을 구현하는 유일한 오픈 소스 컴파일러이다. 이 포크와 EDG의 또 다른 구현은 Compiler Explorer를 통해 시도할 수 있다.) *키워드 `contract_assert`와 특별한 의미를 지닌 식별자 `pre` 및 `post`를 추가하는 계약 기능website=en.cppreference.comwebsite=en.cppreference.com (에릭 W. 피셀리어의 클랭 실험적 포크와 계약을 지원하는 몇 가지 GCC 변형은 Compiler Explorer를 통해 사용할 수 있다.) *사용자 생성 `static_assert` 메시지access-date=6 September 2025 *초기화되지 않은 읽기 오류 동작 *불완전한 형식에 대한 포인터 삭제는 잘못된 형식이어야 함 *더 이상 사용되지 않는 배열 비교 제거 *`constexpr` 구조화 바인딩 및 `constexpr` 변수에 대한 참조 *`constexpr` 배치 `new` *`void*`에서 `constexpr` 캐스트 *`constexpr` 컨테이너 및 어댑터 *가변 인자 프렌드 *상수 평가에서 예외 throw 허용 *이름 없는 자리 표시자 변수 *폴드 표현식을 포함하는 제약 조건의 순서 *팩 인덱싱 *구조화 바인딩은 팩을 도입할 수 있음 *구조화 바인딩에 대한 속성 *조건으로서의 구조화 바인딩 선언 *새로운 식별자/클래스 속성 지정자 `trivially_relocatable_if_eligible` 및 `replaceable_if_eligible`website=en.cppreference.com *바이너리 리소스 포함을 위한 `#embed` 지시어(C23에서 처음 도입됨)와 전처리기 지시어를 통해 리소스 가용성을 확인할 수 있는 `__has_embed` 추가 *평가되지 않은 문자열 *`@`, `$`, ```를 기본 문자 집합에 추가 *`= delete("reason");` *옥스퍼드 가변 인자 쉼표, 즉 "선행 쉼표가 없는 생략 부호 매개변수를 더 이상 사용하지 않는다. 구문 `(int...)`는 C와 호환되지 않고 C++에 해로우며 `(int, ...)`로 쉽게 대체될 수 있다."website=eisenwave.github.io
## 라이브러리
*``: 컴파일 시점 반영 지원 *컴파일러가 사용하는 기존 속성 시스템과 다르게 동작하는 반영에 사용될 주석 지원 *``: 계약에 의한 설계 지원 *경계 강화 표준 라이브러리website=Sutter's Mill *전방 진행을 보장하는 표준 비동기 실행 컨텍스트를 제공하는 병렬 스케줄러 *``: 데이터 병렬 액세스(SIMD 또는 SIMD) 지원 *구조화된 동시성을 위한 비동기 송신기/수신기 모델access-date=6 September 2025 (Libunifex는 C++17 이상에서 컴파일할 수 있는 프로토타입 구현이다.) *``: 스레딩을 위한 해저드 포인터 *`std::copyable_function` *`std::is_within_lifetime` *``: 삭제된 요소의 메모리를 재사용하는 하이브 데이터 구조 지원 *``: 안전한 회수 읽기-복사-업데이트 메커니즘 지원 *``: 크기 조정 가능, 고정 용량, 제자리 연속 배열인 인플레이스 벡터 데이터 구조 지원 *`std::submdspan()` *파일 스트림의 네이티브 핸들 *`std::formatter` *문자열 스트림과 `std::string_view` 인터페이싱 *`std::bitset`과 `std::string_view` 인터페이싱 *`views::concat` *문자열 및 문자열 뷰의 연결 *``: IANA 문자 집합 레지스트리 액세스 지원 *`std::println()`으로 빈 줄 인쇄 *`std::ranges::generate_random` *``: BLAS 기반의 자유 함수 선형 대수 인터페이스 *`std::chrono` 값 클래스에 대한 해싱 지원 *`std::complex`에 튜플 프로토콜 추가 *`` 및 ``에 대한 추가 `constexpr` *비율에 대한 새로운 2022 SI 접두사 추가: `std::quecto`, `std::ronto`, `std::ronna`, `std::quetta` *`std::add_sat`, `std::div_sat` 등을 포함한 포화 연산 *``: 디버깅 지원 및 디버거 프로그램을 돕는 언어 기능
# 반응
초안이 기능적으로 완성된 소피아 C++ 표준 위원회 회의access-date=6 September 2025access-date=6 September 2025와 그 직후 열린 국제 C++ 컨퍼런스인 C++ On Sea에서 여러 사람들이 여행 보고서를 발표했다.access-date=6 September 2025 모두 특히 컴파일 시점 반영의 도입을 주요 변경 사항으로 강조했다. 허브 서터는 C++ 표준 위원회의 "언어 진화" 실무 그룹의 부의장인 하나 두시코바의 말을 인용하며, 이 변경 사항의 잠재적 영향을 "완전히 새로운 언어"라고 요약했다. C++26의 계약 기능은 다양한 이유로 C++ 위원회 내 일부 사람들에 의해 비판을 받아왔다.date=6 October 2025