C++23
| C++ 언어 버전 |
|---|
| C++98 • C++03 • C++11 • C++14 • C++17 • C++20 • C++23 |
C++23, 공식적으로 ISO/IEC 14882:2024,[1]는 C++20에 이어지는 C++ 프로그래밍 언어의 현재 개방형 표준이다. 이 버전의 최종 초안은 N4950이다.[2][3]
2020년 2월, 프라하에서 열린 C++20 최종 회의에서 C++23에 대한 전체 계획이 채택되었다.[4][5] C++23의 계획된 기능은 코루틴을 위한 라이브러리 지원, 모듈화된 표준 라이브러리, 실행자(executor), 네트워킹이었다.
C++23에 초점을 맞춘 첫 WG21 회의는 2020년 6월 초 바르나에서 열릴 예정이었으나, 코로나19 범유행으로 인해 취소되었다.[6][7] 2020년 11월 뉴욕 회의[8][7]와 2021년 2월 코나(Kona) 회의[8]도 마찬가지였다. 2022년 11월까지 모든 회의는 가상으로 진행되었고, 2022년 11월 회의부터 2023년 2월 최종 회의까지는 하이브리드 형식으로 진행되었다.[8] 이 표준은 2023년 2월 이서콰에서 열린 하이브리드 회의에서 WG21에 의해 기술적으로 최종 확정되었다.[9]
현대적인 "Hello, world" 예제
[편집]작업 초안에 많은 라이브러리 변경 사항이 적용된 후, 새로운 "Hello, world" 프로그램은 다음과 같다.
import std;
int main() {
std::println("Hello, world!");
}
기능
[편집]C++23에 승인된 변경 사항은 다음과 같다.
언어
[편집]- 명시적
this객체 매개변수[10] if consteval[11]- 다차원 첨자 연산자[12]
- 정적 호출 및 첨자 연산자와 정적 람다[13][14]
- 암시적 이동 단순화[15]
auto(x)및auto{x}[16]- 새로운 전처리기 지시문:
- 범위 기반 for 루프에서 일부 임시 변수의 수명 연장[19]
- 새로운 표준 속성
[[assume(expression)]][20] - 상속된 생성자로부터의 클래스 템플릿 인자 추론[21]
- 복합 문의 끝에 있는 레이블[22]
- 초기화 문 내의 별칭 선언[23]
std::size_t및 해당 부호 있는 타입에 대한 리터럴 접미사[24]- 리터럴을 포함한 확장 부동 소수점 타입 (조건부 지원)[25]
- 널리 람다 표현식의 선택적
()[26] - 람다 표현식의 속성[27]
constexpr변경 사항:static_assert및if constexpr에서bool로의 컨텍스트적 축소 변환[31]- 라인 연결 전 공백 제거[32]
- 선언 순서 레이아웃 의무화[33]
- 구분된 이스케이프 시퀀스[34]
- 이름 있는 유니버설 문자 이스케이프[35]
- 텍스트 인코딩 변경 사항:
this와 같은 일부 키워드에 새로운 의미 추가..[39]
라이브러리
[편집]표준 라이브러리 모듈 지원
[편집]코루틴 라이브러리 지원
[편집]- 범위에 대한 동기식 코루틴
std::generator[41]
일반 유틸리티 지원
[편집]- 결과 타입
std::expected[42] std::optional[43] 및std::expected[44]을 위한 모나드 연산- enum의 기본 값을 가져오는 유틸리티 함수
std::to_underlying[45] - 이동 전용 호출 가능 래퍼
std::move_only_function[46] std::forward_like[47]std::invoke_r[48]std::bind_back[49]std::byteswap[50]std::unreachable: 접근할 수 없는 코드를 표시하는 함수[51]std::tuple을 다른 튜플 유사 객체와 호환 가능하게 만들었다.[52]- 참조 타입을 반환하는
std::reference_wrapper에 대한std::basic_common_reference특수화 추가[53] std::pair의 전달 생성자에 대한 기본 인자 추가[54]
컴파일 시간 지원
[편집]constexpr지원:- 메타프로그래밍 유틸리티:
- 비교 개념에 대한 이동 전용 타입 지원 추가[63]
이터레이터, 범위 및 알고리즘 지원
[편집]- 새로운 범위 변환 함수
std::ranges::to[64] - 새로운 제약이 있는 범위 알고리즘:
- 새로운
std::ranges::range_adaptor_closure, 사용자 정의 범위 어댑터 클로저를 정의하기 위한 헬퍼[49] - 새로운 범위 어댑터:
std::views::zip및 기타 변형std::views::adjacent및 기타 변형[70]std::views::join_with[71]std::views::slidestd::views::chunk[72]std::views::chunk_by[73]std::views::as_rvalue[74]std::views::as_const[75]std::views::repeat[76]std::views::stride[77]std::views::cartesian_product[78]std::views::enumerate[79]
- 상수 이터레이터, 센티넬 및 범위를 수정하여
std::ranges::cbegin및 기타 유사 유틸리티가 얕은 상수 뷰(예:std::span)의 경우에도 상수 이터레이터를 반환하도록 완전히 보장한다.[75] - 비범위 알고리즘의 입력으로 범위 이터레이터[80]
- 이동 전용 타입을 허용하도록 범위 어댑터 완화[81]
- 일부 뷰의 다중 매개변수 생성자를
explicit으로 만들었다.[82]
메모리 관리 지원
[편집]문자열 및 텍스트 처리 지원
[편집]진단 지원
[편집]- 스택 트레이스 라이브러리[95]
I/O 지원
[편집]컨테이너 지원
[편집]C 호환성 지원
[편집]- 새로운 헤더
<stdatomic.h>[110]
언어 결함 보고서
[편집]- 유니코드 표준 부록 31을 사용하는 C++ 식별자 구문[111]
- 중복 속성 허용[112]
- 람다 후행 반환 타입의 범위 변경[113]
- 오버로드된 비교 연산자를 덜 파괴적인 변경으로 만들기[114]
- Volatile 복합 할당의 폐기 해제[115][116]
char8_t의 호환성 및 이식성 문제 해결[117]- 기존 관행에 맞춰
wchar_t에 대한 요구 사항 완화[118] - 상수 표현식에서
this또는 알 수 없는 출처의 일부 포인터 및 참조 허용[119] - 즉시 확장 함수를 즉시 함수로 승격[120]
- 인스턴스화되지 않은 템플릿 컨텍스트에서
static_assert(false)허용
라이브러리 결함 보고서
[편집]- 범위 라이브러리의 변경 사항:
- 조건부로 빌려온 범위[121]
- 입력 범위 어댑터 및
std::counted_iterator수정[122] std::ranges::join_view에 대한 제약 완화[123]std::ranges::split_view를std::ranges::lazy_split_view로 이름 변경 및 새로운split_view[124]- 개념
std::ranges::view에서std::default_initializable제약 조건 제거[125] - 소유권을 가진 뷰와 새로운
std::ranges::owning_view[126] std::ranges::istream_view수정[127]
- 텍스트 포매팅 라이브러리 변경 사항:
- 완전히
constexpr인std::variant및std::optional[134] std::visit에서std::variant에서 파생된 타입 지원[135]
제거된 기능 및 폐기
[편집]제거된 기능:
- 가비지 컬렉션 지원 및 (엄격한) 포인터 안전성[136] (즉, 완화된 포인터 안전성만 의존 가능[137]). 이 최소한의 가비지 컬렉션 지원(및 이를 위해 필요한 포인터 안전성)은 C++11에 추가되었지만, 어떤 컴파일러도 이를 지원한 적이 없으므로 C++23에서 제거되었다.[138] 그러나 이것이 Boehm GC와 같이 C++와 함께 많은 GC 구현이 사용되지 않았다는 것을 의미하지는 않으며, 디버그 모드에서 누수 감지를 위해 (또한 누수 감지에도) 사용될 수 있으며, 이러한 GC는 다른 언어에서 사용하기 위해 종종 C++로 구현된다.
- 혼합 와이드 문자열 리터럴 연결.[139]
- 인코딩 불가능한 와이드 문자 리터럴 및 다중 문자 와이드 문자 리터럴.[140]
폐기된 기능:
복원된 폐기된 기능:
- 첨자 표현식에서 쉼표 연산자 사용은 더 이상 폐기되지 않았지만, 오버로드 가능한 n-adic
operator[]를 지원하도록 의미가 변경되었다. - C 헤더 (C와의 호환성을 위한 해당
<*.h>헤더)
기술 사양으로 발행됨
[편집]- Concurrency TS v2[143]
컴파일러 지원
[편집]역사
[편집]대면 WG21 회의가 없는 상황에서, 다음 변경 사항들은 여러 가상 WG21 회의 후 적용되었으며, 여기서 여론조사(straw poll)를 통해 승인되었다.
2020년 11월
[편집]2020년 11월 9일 가상 WG21 회의 후 다음 사항들이 추가되었으며, 여론조사를 통해 승인되었다.[146]
2021년 2월
[편집]2021년 2월 22일 가상 WG21 회의 후, 다음 기능들이 추가되었으며 여론조사를 통해 승인되었다.[147]
2021년 6월
[편집]2021년 6월에 열린 여름 ISO C++ 표준 본회의 가상 회의 후, 새로운 기능과 결함 보고서가 여론조사를 통해 승인되었다.[150]
- Consteval if (
if consteval). bool로의 컨텍스트적 축소 변환.- 중복 속성 허용.
std::span기반 문자열 스트림 (<spanstream>).std::out_ptr()및std::inout_ptr().std::optional,std::variant및std::type_info::operator==에 대한constexpr.std::stack(스택) 및std::queue(큐)에 대한 이터레이터 쌍 생성자.- 범위 라이브러리의 몇 가지 변경 사항:
- 임의 범위에 대한 일반화된
starts_with및ends_with. split_view를lazy_split_view로 이름 변경 및 새로운split_view.join_view에 대한 제약 완화.- 개념
view에서default_initializable제약 조건 제거. std::basic_string_view에 대한 범위 생성자.
- 임의 범위에 대한 일반화된
nullptr로부터의std::basic_string및std::basic_string_view생성 금지.std::invoke_r.std::format개선.std::pair의 전달 생성자에 기본 인자 추가.
2021년 10월
[편집]2021년 10월에 열린 2021년 가을 ISO C++ 표준 본회의 가상 회의 후, 새로운 기능과 결함 보고서가 여론조사를 통해 승인되었다.[151]
- 비리터럴 변수, 레이블 및
goto가constexpr함수에 허용되었지만, 컴파일 시간에 평가하는 것은 여전히 잘못된 형식이다. - 명시적
this객체 매개변수. - 문자 집합 및 인코딩 변경 사항.
- 새로운 전처리기:
#elifdef및#elifndef. 두 지시문은 C23 (C 언어 업데이트) 및 GCC 12에 추가되었다.[152] - 초기화 문에서 별칭 선언 허용.
- 다차원 첨자 연산자 오버로드 (예:
arr[1, 2]). - 언어 내 decay copy:
auto(x)또는autox}. - 텍스트 포매팅 라이브러리 변경 사항:
- chrono 포매터에서 로케일 처리 문제 해결.
std::generator유사 타입을 허용하기 위해 형식 인자에서 전달 참조 사용.
std::pmr::polymorphic_allocator와 동등한 타입 별칭std::pmr::stacktrace추가.[153]- 범위 라이브러리 변경 사항:
- 뷰의 정제된 정의.
- 함수 템플릿
std::ranges::istream_view를 별칭 템플릿std::ranges::istream_view,std::ranges::wistream_view및 사용자 정의 지점 객체std::views::istream으로 대체. zip범위 어댑터 패밀리:zip_viewzip_transform_viewadjacent_view(및std::views::pairwise는std::views::adjacent<2>와 동등)adjacent_transform_view(및std::views::pairwise_transform는std::views::adjacent_transform<2>와 동등)
std::move_only_function.std::optional에 대한 모나드 연산.- 멤버 함수 템플릿
std::basic_string::resize_and_overwrite. volatile포인터 출력 (volatile T*).std::byteswap.- 연관 컨테이너에 대한 이기종 삭제 오버로드.
std::span및std::basic_string_view의 모든 특수화는 사소하게 복사 가능하다.std::exchange에 조건부noexcept사양 추가.[154]- 정수 클래스 타입의 사양 및 사용 개편.[155]
- C 헤더 명확화. "헤더는 C++로만 유효해야 하는 코드에서는 유용하지 않다. 따라서 C 헤더는 C++ 표준 라이브러리에서 완전히 지원되고 폐기되지 않은 부분으로 제공되어야 하지만, 다국어 상호 운용 코드(polyglot interoperability code)가 아닌 코드에서는 사용이 권장되지 않는다. [..] 이 제안은 C 헤더를 더 이상 폐기되지 않도록 하여 향후 제거될 formal threat를 없앤다. 순수 C++ 코드에서 C 헤더 사용을 자제하도록 하는 실질적인 권장 사항은 이제 규범적 권장 사항으로 명시적으로 명시된다."[156]
2022년 2월
[편집]2022년 2월 7일 가상 WG21 회의 후, 다음 기능들이 추가되었으며 여론조사를 통해 승인되었다.[157]
- 람다의 함수 호출 연산자에 속성 허용
std::expectedcmath및cstdlib에 대한constexpr- 접근할 수 없는 코드를 표시하는 함수
ranges::to- 임시 객체에 대한 참조 바인딩을 감지하는 타입 트레잇
std::unique_ptr를constexpr로 만들기- 사용자 정의 범위 어댑터에 대한 파이프 지원
ranges::iota,ranges::shift_left및ranges::shift_rightviews::join_with- 윈도잉 범위 어댑터:
views::chunk및views::slide views::chunk_by
2022년 7월
[편집]2022년 7월 25일 가상 WG21 회의 후, 다음 기능 및 결함 보고서가 추가되었으며 여론조사를 통해 승인되었다.[158]
- 표현식에서 동일성 재작성을 덜 파괴적인 변경으로 만들었다.
volatile변수에 대한 비트별 할당 폐기 해제를 되돌렸다.#warning전처리기 지시어를 추가했다.- 인코딩 불가능한 와이드 문자 리터럴과 다중 문자 와이드 문자 리터럴을 제거했다.
- 레이블이 복합 문의 끝에 나타날 수 있도록 허용했다.
- 8진수 및 16진수에 대한 중괄호로 구분된 이스케이프 시퀀스와 유니버설 문자 이름을 추가했다.
constexpr함수가 상수 표현식이 될 수 없도록 허용했다.- C++20의 일부 암시적 이동 규칙을 단순화하고 rvalue 참조를 반환할 때 암시적 이동을 허용했다.
- 이름으로 유니코드 문자를 지정하는 방법을 추가했다. 예를 들어,
U'\N{LATIN CAPITAL LETTER A WITH MACRON}' // Equivalent to U'\u0100' operator()및 람다가static이 될 수 있도록 허용했다.this포인터와 알 수 없는 출처의 참조가 상수 표현식에 나타날 수 있도록 허용했다.- 세 가지 표준 부동 소수점 타입 외에 확장 부동 소수점 타입을 정의할 수 있도록 구현을 허용했다. 헤더
<stdfloat>를 통해 접근 가능한 이러한 확장 타입에 대한 타입 별칭std::float16_t,std::float32_t,std::float64_t,std::float128_t,std::bfloat16_t와 해당 리터럴 접미사f16f32f64f128bf16또는F16F32F64F128BF16을 추가하고, float를 인수로 받는 다양한 표준 라이브러리 함수에 오버로드를 추가했다. - 컴파일러가 제공된 표현식이 참이라고 가정하여 최적화를 허용하는
[[assume(expression)]]속성을 추가했다. - 소스 파일의 이동 가능한 인코딩을 제공하기 위해 UTF-8 소스 파일 지원을 의무화했다.
char및unsigned char배열을 UTF-8 문자열 리터럴로 초기화할 수 있도록 허용했다.- 확장 문자 집합의 모든 문자를 인코딩할 수 있다는
wchar_t에 대한 요구 사항을 제거하여, UTF-16을 와이드 문자열 리터럴에 사용할 수 있도록 효과적으로 허용했다. std::span과 유사한 다차원 배열 뷰인std::mdspan을 추가했다.flat_map및flat_set이 표준 라이브러리에 추가되었다.- 표준 출력에 서식 있는 텍스트를 출력하기 위한
std::print및std::println함수를 추가했다. - 표준 라이브러리를 가져오기 위한 이름 있는 모듈
std및std.compat를 제공한다. fopen의 "x" 플래그와 유사하게 독점 모드fstream에 대한 지원을 추가했다.std::format이 범위, 튜플 및 기타 컨테이너를 처리할 수 있도록 허용했다.std::forward_like를 추가했다.std::string::substr가 이동 시맨틱스를 사용하도록 만들었다.std::ranges::input_range를 모델링하는 코루틴 생성자를 구현하는std::generator를 추가했다.views::cartesian_product,views::repeat,views::stride,views::as_const,views::as_rvalue.- 새로운 알고리즘 추가:
ranges::find_last,ranges::contains및 범위 폴드 알고리즘. std::tuple을 다른 튜플 유사 객체와 호환 가능하게 만들었다.- 암시적 수명 타입에 대한 명시적 수명 관리.
std::bitset및std::to_chars와std::from_chars의 정수 오버로드를constexpr-호환 가능하게 만들었다.- 비교 개념에 대한 이동 전용 타입 지원 추가.
- 비범위 알고리즘의 입력으로 범위 이터레이터.
- 이동 전용 타입을 허용하도록 범위 어댑터 완화.
2022년 11월
[편집]2022년 11월 7일 하이브리드 WG21 회의 후, 다음 기능 및 결함 보고서가 추가되었으며 여론조사를 통해 승인되었다.[159]
operator[]가static이 될 수 있도록 허용했다.- 상수 표현식에서 사용 가능한 경우,
static및thread_local변수가constexpr함수에 나타날 수 있도록 허용했다. consteval이 위로 전파되도록 했다. 즉, 특정 기존constexpr함수는 컴파일 시간에만 호출될 수 있는 경우consteval함수가 된다.- 범위 기반
for루프의 for-range-initializer에 나타나는 임시 변수의 수명을 전체 루프를 포함하도록 연장했다. - (비트별이 아닌 모든) 복합 할당을
volatile변수에 대한 폐기 해제를 되돌렸다. std::expected에 대한 모나드 함수.- 네이티브 유니코드 API가 사용되는 경우
std::print의 출력을 기본 스트림과 동기화한다.[160]
2023년 2월
[편집]2023년 2월 6일부터 11일까지 열린 최종 하이브리드 WG21 회의 후, 다음 기능 및 결함 보고서가 추가되었으며 여론조사를 통해 승인되었다.[161]
- 유니코드 표준 참조.[162]
- 적절한 평탄화를 위한 스태싱 이터레이터 스태싱.[163]
views::enumerate- 뷰의 다중 매개변수 생성자를 명시적으로 만들기
- 범위를 약간 더 완화
std::format의 이스케이프 개선std::format의 너비 추정 개선std::format채움 문자 허용thread::id및stacktrace포매팅- 타입 트레잇
std::is_implicit_lifetime std::reference_wrapper의std::common_reference_t는 참조 타입이어야 한다.std::allocator_traits의 사용자 특수화 금지std::pmr::generatorstd::numeric_limits::has_denorm폐기std::barrier의 페이즈 완료 보장
같이 보기
[편집]각주
[편집]- ↑ “ISO/IEC 14882:2024 Programming languages — C++”. 《iso.org》.
- ↑ “Working Draft, Standard for Programming Language C++” (PDF). 《Open Standards》. ISO/IEC. 2023년 5월 10일. 2024년 2월 16일에 원본 문서 (PDF)에서 보존된 문서.
- ↑ “N4951 Editors' Report: Programming Languages - C++”. 《Open Standards》. 2023년 5월 10일. 2023년 6월 5일에 원본 문서에서 보존된 문서.
- ↑ Dusíková, Hana (2019년 11월 6일). “N4817: 2020 Prague Meeting Invitation and Information” (PDF). 《Open Standards》. 2019년 12월 29일에 원본 문서 (PDF)에서 보존된 문서. 2020년 2월 13일에 확인함.
- ↑ Voutilainen, Ville (2019년 11월 25일). “To boldly suggest an overall plan for C++23”. 《Open Standards》. 2019년 12월 24일에 원본 문서에서 보존된 문서. 2020년 2월 13일에 확인함.
- ↑ Lelbach, Bryce Adelstein; Winters, Titus; Fracassi, Fabio; Baker, Billy; Liber, Nevin; Bastien, JF; Stone, David; Ballo, Botond; Keane, Erich; Honermann, Tom (2020년 4월 20일). “P2145R0: Evolving C++ Remotely”. 《Open Standards》. 2024년 2월 12일에 원본 문서에서 보존된 문서.
- 1 2 Sutter, Herb (2020년 7월 29일). “Business Plan and Convener's Report: ISO/IEC JTC1/SC22/WG21 (C++)” (PDF).
- 1 2 3 “Upcoming Meetings, Past Meetings : Standard C++”. 《isocpp.org》.
- ↑ “C++23 "Pandemic Edition" is complete (Trip report: Winter ISO C++ standards meeting, Issaquah, WA, USA)”. 《herbsutter.com》. 2023년 2월 13일.
- ↑ Gašper Ažman; Sy Brand; Ben Deane; Barry Revzin (2021년 7월 12일). “Deducing this”.
- ↑ Barry Revzin; Richard Smith; Andrew Sutton; Daveed Vandevoorde (2021년 3월 22일). “if consteval”.
- ↑ Mark Hoemmen; Daisy Hollman; Corentin Jabot; Isabella Muerte; Christian Trott (2021년 9월 14일). “Multidimensional subscript operator” (PDF).
- ↑ “static operator()”. 2022년 4월 8일.
- ↑ “static operator[]” (PDF). 2022년 11월 11일.
- ↑ “Simpler implicit move”. 2022년 3월 23일.
- ↑ Zhihao Yuan (2021년 7월 12일). “auto(x): decay-copy in the language”.
- ↑ Melanie Blower (2021년 4월 30일). “Add support for preprocessing directives elifdef and elifndef” (PDF).
- ↑ Aaron Ballman (2022년 1월 13일). “Support for #warning” (PDF).
- ↑ “Wording for P2644R1 Fix for Range-based for Loop”. 2022년 11월 11일.
- ↑ “Portable assumptions” (PDF). 2022년 4월 22일.
- ↑ Timur Doumler (2022년 5월 20일). “Wording for class template argument deduction from inherited constructors” (PDF).
- ↑ “Labels at the end of compound statements (C compatibility)” (PDF). 2022년 1월 13일.
- ↑ Jens Maurer (2021년 4월 13일). “Extend init-statement to allow alias-declaration”.
- ↑ JeanHeyd Meneide; Rein Halbersma (2019년 11월 24일). “Literal Suffix for (signed) size_t”.
- ↑ “Extended floating-point types and standard names”. 2022년 4월 22일.
- ↑ Alex Christensen; JF Bastien (2020년 12월 11일). “P1102R2: Down with ()!”.
- ↑ “Attributes on Lambda-Expressions” (PDF).
- ↑ Ville Voutilainen (2021년 7월 12일). “Non-literal variables (and labels and gotos) in constexpr functions”.
- ↑ “Permitting
static constexprvariables inconstexprfunctions”. 2022년 11월 7일. - ↑ “Relaxing some constexpr restrictions”. 2022년 1월 27일.
- ↑ Andrzej Krzemieński (2021년 4월 12일). “Narrowing contextual conversions to bool”.
- ↑ Corentin Jabot (2021년 4월 13일). “Trimming whitespaces before line splicing” (PDF).
- ↑ Pal Balog (2021년 4월 2일). “Make declaration order layout mandated” (PDF).
- ↑ “Delimited escape sequences” (PDF). 2022년 2월 25일.
- ↑ “Named universal character escapes”. 2022년 3월 25일.
- ↑ “Support for UTF-8 as a portable source file encoding” (PDF). 2022년 7월 1일.
- ↑ Corentin Jabot (2021년 9월 14일). “Consistent character literal encoding” (PDF).
- ↑ Jens Maurer (2021년 9월 21일). “Character sets and encodings”.
- ↑ “C++ keywords - cppreference.com”. 《en.cppreference.com》. 2025년 7월 27일에 확인함.
- ↑ “Standard Library Modules std and std.compat” (PDF).
- ↑ “(std::generator: Synchronous Coroutine Generator for Ranges)” (PDF).
- ↑ Vicente Botet; JF Bastien; Jonathan Wakely (2022년 1월 7일). “std::expected”.
- ↑ Sy Brand (2021년 4월 27일). “Monadic operations for std::optional”.
- ↑ Jeff Garland (2022년 9월 28일). “P2505R5 Monadic Functions for
std::expected”. - ↑ JeanHeyd Meneide (2021년 1월 22일). “std::to_underlying for enumerations”.
- ↑ Matt Calabrese; Ryan McDougall (2021년 7월 9일). “move_only_function”.
- ↑ Gašper Ažman (2022년 5월 13일). “std::forward_like” (PDF).
- ↑ Zhihao Yuan (2020년 4월 29일). “invoke_r”.
- 1 2 Barry Revzin (2021년 12월 17일). “Pipe support for user-defined range adaptors”.
- ↑ Isabella Muerte; Corentin Jabot (2021년 9월 17일). “Byteswapping for fun&&nuf”.
- ↑ Melissa Mears; Jens Maurer (2021년 10월 15일). “Function to mark unreachable code” (PDF).
- ↑ Corentin Jabot (2022년 7월 15일). “Compatibility between tuple, pair and tuple-like objects” (PDF).
- ↑ Hui Xie; S. Levent Yilmaz; Tim Song (2023년 2월 7일). “common_reference_t of reference_wrapper Should Be a Reference Type”.
- ↑ “Wording for P2644R1 Fix for Range-based for Loop”. 2022년 11월 11일.
- ↑ Peter Dimov (2021년 5월 1일). “Making std::type_info::operator== constexpr”.
- ↑ Daniil Goncharov (2022년 6월 25일). “A more constexpr bitset” (PDF).
- ↑ Andreas Fertig (2021년 11월 6일). “Making std::unique_ptr constexpr” (PDF).
- ↑ Edward J. Rosten; Oliver J. Rosten (2021년 11월 12일). “constexpr for <cmath> and <cstdlib>” (PDF).
- ↑ Daniil Goncharov; Alexander Karaev (2021년 9월 18일). “Add Constexpr Modifiers to Functions to_chars and from_chars for Integral Types in <charconv> Header” (PDF).
- ↑ Juan Alday (2020년 10월 12일). “A proposal for a type trait to detect scoped enumerations” (PDF).
- ↑ Timur Doumler; Vittorio Romeo (2022년 11월 11일). “A trait for implicit lifetime types” (PDF).
- ↑ Tim Song (2021년 10월 13일). “A type trait to detect reference binding to temporary”.
- ↑ Justin Bassett (2022년 7월 2일). “Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with” (PDF).
- 1 2 Corentin Jabot; Eric Niebler; Casey Carter (2022년 1월 21일). “Conversions from ranges to containers” (PDF).
- ↑ Christopher Di Bella (2021년 2월 19일). “starts_with and ends_with”.
- ↑ Christopher Di Bella (2021년 4월 16일). “std::ranges::contains”.
- ↑ Zach Laine (2022년 6월 17일). “find_last” (PDF).
- ↑ Tim Song (2021년 12월 5일). “ranges::iota, ranges::shift_left, and ranges::shift_right”.
- ↑ Barry Revzin (2022년 4월 22일). “ranges::fold”.
- ↑ Tim Song (2021년 6월 11일). “zip”.
- ↑ Barry Revzin (2022년 1월 28일). “views::join_with”.
- ↑ Tim Song (2021년 12월 5일). “Windowing range adaptors: views::chunk and views::slide”.
- ↑ Tim Song (2021년 11월 19일). “views::chunk_by”.
- ↑ Barry Revzin (2022년 2월 14일). “views::as_rvalue”.
- 1 2 Barry Revzin (2022년 6월 17일). “cbegin should always return a constant iterator”.
- ↑ Michał Dominiak (2022년 7월 13일). “views::repeat”.
- ↑ Christopher Di Bella; Tim Song (2022년 7월 8일). “stride_view”.
- ↑ Sy Brand; Michał Dominiak (2022년 7월 13일). “views::cartesian_product”.
- ↑ Corentin Jabot (2022년 12월 7일). “views::enumerate” (PDF).
- ↑ David Olsen (2022년 4월 22일). “Ranges iterators as inputs to non-Ranges algorithms”.
- ↑ Michał Dominiak (2022년 7월 13일). “Relaxing range adaptors to allow for move only types”.
- ↑ Ville Voutilainen (2022년 11월 12일). “Making multi-param constructors of views explicit”.
- ↑ JeanHeyd Meneide; Todor Buyukliev; Isabella Muerte (2021년 4월 15일). “out_ptr - a scalable output pointer abstraction”.
- ↑ Jonathan Wakely; Chris Kennelly (2021년 1월 22일). “Providing size feedback in the Allocator interface”.
- ↑ Timur Doumler; Richard Smith (2022년 7월 15일). “Explicit lifetime management” (PDF).
- ↑ Pablo Halpern (2023년 2월 8일). “Disallow User Specialization of allocator_traits”.
- ↑ Wim Leflere; Paul Fee (2020년 6월 13일). “string contains function”.
- ↑ Yuriy Chernyshov (2020년 9월 6일). “A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr.”.
- ↑ Corentin Jabot (2021년 3월 17일). “Range constructor forstd::string_view 2: Constrain Harder” (PDF).
- ↑ Chris Kennelly; Mark Zeren (2021년 9월 14일). “basic_string::resize_and_overwrite”.
- ↑ “std::string::substr() &&”.
- ↑ “Formatting Ranges”. 2022년 5월 16일.
- ↑ Barry Revzin (2022년 7월 15일). “Improve default container formatting”.
- ↑ Corentin Jabot; Victor Zverovich (2023년 2월 9일). “Formatting thread::id and stacktrace” (PDF).
- ↑ Alexey Gorgurov; Antony Polukhin (2020년 9월 16일). “A Proposal to add stacktrace library”.
- ↑ “Formatted output”.
- ↑ Peter Sommerlad (2021년 2월 26일). “A strstream replacement using span<charT> as buffer” (PDF).
- ↑ “Support exclusive mode for fstreams”.
- ↑ Bryce Adelstein Lelbach (2021년 9월 25일). “Printing volatile Pointers”.
- ↑ “MDSPAN”. 2022년 7월 13일.
- ↑ “index_type & size_type in mdspan” (PDF).
- ↑ “
mdspan: renamepointerandcontiguous”. 2022년 6월 15일. - ↑ “Add the missing
emptytomdspan”. - ↑ “A Standard flat_map” (PDF).
- ↑ “A Standard flat_set” (PDF).
- ↑ Arthur O'Dwyer; Mike Spertus (2021년 3월 14일). “Stop overconstraining allocators in container deduction guides”.
- ↑ Konstantin Boyarinov; Sergey Vinogradov; Ruslan Arutyunyan (2020년 12월 15일). “Heterogeneous erasure overloads for associative containers”.
- ↑ Corentin Jabot (2021년 3월 5일). “Iterators pair constructors for stack and queue” (PDF).
- ↑ Nevin Liber (2021년 3월 19일). “Require span & basic_string_view to be TriviallyCopyable” (PDF).
- ↑ Hans-J. Boehm (2020년 10월 23일). “P0943R6: Support C atomics in C++”.
- ↑ Steve Downey; Zach Laine; Tom Honermann; Peter Bindels; Jens Maurer (2021년 4월 12일). “C++ Identifier Syntax using Unicode Standard Annex 31”.
- ↑ Erich Keane (2020년 7월 2일). “Allow Duplicate Attributes” (PDF).
- ↑ Barry Revzin (2021년 9월 14일). “Change scope of lambda trailing-return-type”.
- ↑ “The Equality Operator You Are Looking For”. 2022년 1월 13일.
- ↑ “De-deprecating volatile compound operations” (PDF).
- ↑ “Core Language Working Group NB comment resolutions for the November, 2022 meeting : 2654. Un-deprecation of compound volatile assignments”.
- ↑ “
char8_tCompatibility and Portability Fix”. 2022년 6월 17일. - ↑ “Relax requirements on
wchar_tto match existing practices” (PDF). 2022년 7월 15일. - ↑ “Using unknown pointers and references in constant expressions”. 2022년 4월 8일.
- ↑ “
constevalneeds to propagate up”. 2022년 11월 11일. - ↑ Barry Revzin (2020년 2월 19일). “Conditionally borrowed ranges”.
- ↑ Tim Song (2021년 1월 12일). “Repairing input range adaptors and counted_iterator”.
- ↑ Tim Song (2021년 5월 6일). “join_view should join all views of ranges”.
- ↑ Barry Revzin (2021년 3월 5일). “Superior String Splitting”.
- ↑ Barry Revzin (2021년 5월 14일). “Views should not be required to be default constructible”.
- ↑ Barry Revzin; Tim Song (2021년 8월 15일). “What is a view?”.
- ↑ Nicolai Josuttis (2021년 9월 24일). “Fix istream_view” (PDF).
- ↑ Barry Revzin (2022년 1월 18일). “Expose std::basic-format-string<charT, Args...>”.
- ↑ Victor Zverovich (2021년 2월 5일). “std::format improvements”.
- ↑ Victor Zverovich; Corentin Jabot (2021년 9월 11일). “Fixing locale handling in chrono formatters”.
- ↑ Corentin Jabot (2022년 12월 2일). “format's width estimation is too approximate and not forward compatible” (PDF).
- ↑ Tom Honermann (2023년 2월 8일). “std::format() fill character allowances”.
- ↑ Victor Zverovich (2021년 9월 24일). “Add support for std::generator-like types to std::format”.
- ↑ Barry Revzin (2021년 2월 11일). “Missing constexpr in std::optional and std::variant”.
- ↑ Barry Revzin (2020년 10월 30일). “Inheriting from std::variant”.
- ↑ “std::pointer_safety - cppreference.com”. 《en.cppreference.com》. 2024년 12월 9일에 확인함.
- ↑ “[basic.stc.dynamic.safety]”. 《timsong-cpp.github.io》. 2024년 12월 9일에 확인함.
- ↑ JF Bastien; Alisdair Meredith (2021년 4월 16일). “Removing Garbage Collection Support”.
- ↑ Jens Maurer (2021년 4월 12일). “Mixed string literal concatenation”.
- ↑ “Remove non-encodable wide character literals and multicharacter wide character literals” (PDF).
- ↑ CJ Johnson (2021년 11월 22일). “Deprecate std::aligned_storage and std::aligned_union” (PDF).
- ↑ Matthias Kretz (2022년 11월 8일). “Deprecate numeric_limits::has_denorm” (PDF).
- ↑ “Programming Languages — Technical specification for C++ extensions for concurrency 2” (PDF).
- ↑ “C++ Support in Clang”.
- ↑ “C++ Standards Support in GCC - GNU Project”.
- ↑ Ranns, Nina (2020년 11월 19일). “WG21 2020-11 Virtual Meeting: Minutes of Meeting” (PDF).
- ↑ Ranns, Nina (2021년 2월 22일). “WG21 2021-02 Virtual Meeting: Minutes of Meeting” (PDF).
- ↑ Alexey Dmitriev; Howard Hinnant (2020년 10월 22일). “Relax Requirements for time_point::clock”.
- ↑ Tim Song (2020년 11월 13일). “Locks lock lockables”.
- ↑ Ranns, Nina (2021년 6월 7일). “WG21 2021-06 Virtual Meeting Minutes of Meeting” (PDF).
- ↑ Ranns, Nina (2021년 10월 4일). “WG21 2021-10 Virtual Meeting Minutes of Meeting” (PDF).
- ↑ “GCC 12 Adds Support For New #elifdef #elifndef Directives”. 《phoronix》. 2021년 5월 12일. 2022년 12월 27일에 원본 문서에서 보존된 문서.
- ↑ Steve Downey (2021년 6월 14일). “Add a pmr alias for std::stacktrace”.
- ↑ Giuseppe D'Angelo (2021년 6월 28일). “Add a conditional noexcept specification to std::exchange”.
- ↑ Tim Song (2021년 8월 6일). “Cleaning up integer-class types”.
- ↑ Thomas Köppe (2021년 6월 11일). “Clarifying the status of the "C headers"”.
- ↑ Ranns, Nina (2022년 2월 7일). “WG21 2022-02 Virtual Meeting: Minutes of Meeting” (PDF).
- ↑ Ranns, Nina (2022년 8월 9일). “WG21 2022-07 Virtual Meeting: Minutes of Meeting” (PDF).
- ↑ Ranns, Nina (2022년 12월 5일). “WG21 2022-11 Hybrid Meeting: Minutes of Meeting” (PDF).
- ↑ Victor Zverovich (2022년 11월 8일). “Should the output of std::print to a terminal be synchronized with the underlying stream?”.
- ↑ Ranns, Nina (2023년 3월 6일). “WG21 2023-02 Hybrid Meeting: Minutes of Meeting” (PDF).
- ↑ Corentin Jabot (2023년 2월 9일). “Referencing The Unicode Standard” (PDF).
- ↑ Tim Song (2023년 1월 31일). “Stashing stashing iterators for proper flattening”.