상위 질문
타임라인
채팅
관점

C++26

위키백과, 무료 백과사전

Remove ads

C++26C++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와 특별한 의미를 지닌 식별자 prepost를 추가하는 계약 기능[7][8] (에릭 W. 피셀리어의 클랭 실험적 포크와 계약을 지원하는 몇 가지 GCC 변형은 Compiler Explorer를 통해 사용할 수 있다.)
  • 사용자 생성 static_assert 메시지[9]
  • 초기화되지 않은 읽기 오류 동작
  • 불완전한 형식에 대한 포인터 삭제는 잘못된 형식이어야 함
  • 더 이상 사용되지 않는 배열 비교 제거
  • constexpr 구조화 바인딩 및 constexpr 변수에 대한 참조
  • constexpr 배치 new
  • void*에서 constexpr 캐스트
  • constexpr 컨테이너 및 어댑터
  • 가변 인자 프렌드
  • 상수 평가에서 예외 throw 허용
  • 이름 없는 자리 표시자 변수
  • 폴드 표현식을 포함하는 제약 조건의 순서
  • 팩 인덱싱
  • 구조화 바인딩은 팩을 도입할 수 있음
  • 구조화 바인딩에 대한 속성
  • 조건으로서의 구조화 바인딩 선언
  • 새로운 식별자/클래스 속성 지정자 trivially_relocatable_if_eligiblereplaceable_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_function
  • std::is_within_lifetime
  • <hive>: 삭제된 요소의 메모리를 재사용하는 하이브 데이터 구조 지원
  • <rcu>: 안전한 회수 읽기-복사-업데이트 메커니즘 지원
  • <inplace_vector>: 크기 조정 가능, 고정 용량, 제자리 연속 배열인 인플레이스 벡터 데이터 구조 지원
  • std::submdspan()
  • 파일 스트림의 네이티브 핸들
  • std::formatter<std::filesystem::path>
  • 문자열 스트림과 std::string_view 인터페이싱
  • std::bitsetstd::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]

각주

외부 링크

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads