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