C++20
C++20C++ 언어 리비전 |
---|
C++20은 C++ 프로그래밍 언어용 ISO/IEC 14882 표준 버전입니다.C++20은 이전 버전의 C++ 표준인 C++[1]17을 대체했습니다.이 표준은 2020년 [3]2월 프라하에서 열린 회의에서 WG21에 의해 기술적으로[2] 최종 결정되었고,[4][5] 2020년 9월 4일에 승인되었으며,[6] 2020년 12월에 발표되었다.
특징들
C++20은 C++14 또는 C++[7]17보다 더 많은 새로운 주요 기능을 추가합니다.C++20에서 받아들여진 변경은 다음과 같습니다.[8]
언어
- 개념,[9] 간결한[10] 구문을 사용한
- 모듈[11]
- 대표 이니셜라이저[12](C99 기능 및 공통 g++ 확장에 기반)
[=, this]
람다[13] 포획으로- 템플릿[14] 매개 변수 목록(람다
- "오퍼레이터"를 사용한 삼원 비교,
operator <=>
- 범위 기반 내의 추가 변수 초기화
for
진술서[15] - 무가치한[16][17] 문맥에서의 람다
- 기본 구성 및 할당 가능한 상태 비저장[16][18] 람다
- 람다 초기화[16][19] 시 팩 확장을 허용한다.
- 비타입 템플릿파라미터의 클래스유형, 템플릿파라미터로서의[20] 문자열 리터럴도 허용
- 의 필요성을 배제하다
typename
어떤 상황에서는[21] - 새로운 표준 속성
[[no_unique_address]]
,[22][[likely]]
그리고.[[unlikely]]
[23] - 조건부
explicit
를 허가하다explicit
부울식에[24] 따라 달라지는 수식어 - 확장된
constexpr
: 가상 함수,[25]union
,[26]try
그리고.catch
,[27]dynamic_cast
그리고.typeid
,[28]std::pointer_traits
[29] - 새로운 기능을 사용하는 즉시 기능
consteval
키워드[30] - 부호 있는 정수는 이제 2의 보수를 사용하여 표현되도록 정의됩니다(서명된 정수 오버플로우는 정의되지 않은 [31]동작 그대로임).
- 수정된 기억[32] 모델
- 구조화된 바인딩의 다양한 개선(람다 포획과의 상호작용,
static
그리고.thread_local
보관 기간)[33][34] - 코루틴[35]
using
스코프로enum
s[36].constinit
키워드[37]
도서관
- ranges (1개의 범위 제안)[38]
std::make_shared
그리고.std::allocate_shared
어레이용[39]- 아토믹 스마트포인터(등)
std::atomic<shared_ptr<T>>
그리고.std::atomic<weak_ptr<T>>
) [40]。 std::to_address
포인터를 원시[41] 포인터로 변환하다- 일정 및 시간대 추가
<chrono>
[42] std::span
연속된 어레이에 대한 뷰 제공(에 포함)std::string_view
그렇지만span
참조된 [43]시퀀스를 변환할 수 있습니다).std::erase
그리고.std::erase_if
, 대부분의 표준 컨테이너에[44] 대한 요소 삭제 간소화<version>
머리글자[45]std::bit_cast<>
보다 적은 장황함으로 객체 표현의 활자 캐스팅을 위해memcpy()
컴파일러의[46] 내부 기능을 이용할 수 있습니다.- 기능 테스트[47] 매크로
- 다양한 Constexpr 라이브러리[48] 비트
- 기본[49] 초기화를 사용한 스마트 포인터 생성
contains
- 관련 용기에[50] 대한 설명- 비트 연산(선행/후행 제로/[51]원 카운트, log2 연산[52][53][54] 등)
std::bind_front
[55]
새로운 키워드 및 변경된 키워드
많은 새로운 키워드가 추가되었습니다(및 새로운 "spaceship operator",operator <=>
예를 들어 다음과 같습니다.concept
,constinit
,[37] consteval
,co_await
,co_return
,co_yield
,requires
(또한 의미 변경)export
, 및char8_t
(UTF-8 지원).[56]그리고.explicit
C++20 [57]이후의 식을 사용할 수 있습니다.대부분의 용도는volatile
키워드는 [58]폐지되었습니다.
키워드 외에도 new를 포함한 특별한 의미를 가진 식별자가 있습니다.import
그리고.module
.
C++20의 새로운 속성:[[likely]]
,[[unlikely]]
,그리고.[[no_unique_address]]
[59]
삭제 및 폐지됨
삭제된 기능:[60]
- C에서 파생된 헤더
<ccomplex>
,<ciso646>
,<cstdalign>
,<cstdbool>
그리고.<ctgmath>
C++에서는 아무런 의미가 없기 때문에 삭제되었습니다.<*.h>
C와의 호환성을 위해 헤더는 남아 있습니다). - 의 사용
throw()
예외 사양이 삭제되었기 때문입니다. - 다음과 같이 이전에 사용되지 않았던 라이브러리 기능이 제거되었습니다.
std::uncaught_exception
,std::raw_storage_iterator
,std::is_literal_type
,std::is_literal_type_v
,std::result_of
그리고.std::result_of_t
.
사용되지 않는 기능:
기술사양서 발행
이후 표준으로 이연됨
- 계약 – 새로운[66] 제안서를 작성하기 위한 새로운 스터디 그룹(SG21)이 구성되었습니다.
- 반사[67][68]
- 메타클라스[69]
- 실행자[70]
- 비동기, 기본 I/O 서비스, 타이머, 버퍼 및 버퍼 지향 스트림, 소켓 및 인터넷 프로토콜(실행자에 의해 차단됨)을 포함한 네트워킹 [71][72]확장
- 속성[73]
- 연장선물[74]
컴파일러 지원
- Clang에는 옵션으로 활성화 할 수 있는 부분적인 C++20 지원이 있습니다.
-std=c++20
(버전 10 이후) 또는-std=c++2a
(버전 9 이전).[75] - EDG eccp는 버전 5.0부터 C++20 기능의 실장을 개시해, 버전 6.1에서는 대부분의 C++20 코어 언어 [76]기능을 서포트하고 있습니다.
- GCC는 옵션을 통해 2017년 버전[77] 8에서 부분적인 실험적인 C++20 지원을 추가했습니다.
-std=c++2a
Clang과 마찬가지로 GCC는 이 옵션을-std=c++20
를 참조해 주세요.또한 실험적인 C++20 지원 외에 GNU 확장을 활성화하는 옵션도 있습니다.-std=gnu++20
를 클릭합니다.[78] - Visual Studio 2019는 C++20 기능을 모두 지원합니다.
/std:c++latest
옵션(버전 16.10.[79]0 이후)을 클릭합니다.옵션/std:c++20
C++20 모드를 유효하게 하는 것은, 버전 16.11.[80][81]0 에 추가되었습니다.
역사
2017년 7월 C++20 실무초안에 적용된 변경사항은 다음과 같다.[82]
- (표준으로 된 것은 컷다운버전입니다.컨셉츠 [83]라이트라고도 불립니다)
- 지정 이니셜라이저
[=, this]
람다 포획으로- 템플릿 매개 변수 목록(람다
std::make_shared
그리고.std::allocate_shared
어레이용
2017년 11월 가을 회의(Albuquerque)에서 C++20 작업 초안에 적용된 변경 사항은 다음과 같습니다.[84][85]
- "오퍼레이터"를 사용한 삼원 비교,
operator <=>
- 범위 기반 내의 추가 변수 초기화
for
진술 - 무가치한 문맥에서의 람다
- 기본 구성 및 할당 가능한 상태 비저장 람다
- 람다 초기화 시 팩 확장을 허용한다.
- 템플릿 매개 변수로 문자열 리터럴
- 아토믹 스마트포인터(등)
std::atomic<shared_ptr<T>>
그리고.std::atomic<weak_ptr<T>>
) std::to_address
포인터를 원시 포인터로 변환하다
2018년 3월 C++20 작업 초안(Jacksonville)에 적용된 변경 사항은 다음과 같습니다.[86]
- 의 필요성을 배제하다
typename
어떤 상황에서는 - 새로운 표준 속성
[[no_unique_address]]
,[[likely]]
그리고.[[unlikely]]
- 일정 및 시간대 추가
<chrono>
std::span
연속된 어레이에 대한 뷰 제공(에 포함)std::string_view
그렇지만span
참조된 시퀀스를 변환할 수 있습니다).<version>
머리글자
2018년 6월 여름 회의에서 C++20 작업 초안에 적용된 변경 사항은 다음과 같습니다(Rapperswil).[87]
- 계약(나중에 나중에 [88]표준으로 이연됨)
- 기능 테스트 매크로
- 보다 적은 장황함으로 객체 표현의 비트캐스팅
memcpy()
컴파일러의 내부 기능을 이용할 수 있습니다. - 조건부
explicit
명시적 수식자를 부울식에 의존시킬 수 있습니다. - constexpr 가상 함수
2018년 11월(샌디에이고) 가을 회의에서 C++20 작업 초안에 적용된 변경 사항은 다음과 같습니다.
- ranges (1개의 범위 제안)
- 개념 간결한 구문
constexpr
union
,try
그리고.catch
,dynamic_cast
,typeid
그리고.std::pointer_traits
.- 여러가지
constexpr
라이브러리 비트 - 새로운 기능을 사용하는 즉시 기능
consteval
키워드 - 부호 있는 정수는 이제 2의 보수를 사용하여 표현되도록 정의됩니다(서명된 정수 오버플로우는 정의되지 않은 동작 그대로임).
계약설비의 개선(계약조건에서의 [89]접근통제) (나중의 표준에 준거한 기능 목록 참조)- 수정된 기억 모델
- 기본 초기화를 사용한 스마트 포인터 생성
2019년 2월(코나) 동계 회의에서 C++20 작업 초안에 적용된 변경 사항은 다음과 같습니다.[90][91]
2019년 7월 여름 회의에서 C++20 작업 초안에 적용된 변경 사항은 다음과 같습니다([92][93][94]Cologne).
- 계약이 삭제되었습니다(나중의 [95]표준에 따라 보류된 기능 목록 참조).
- 첨자 식에서 쉼표 연산자의 사용이 권장되지[61] 않습니다.
constexpr
additions(디폴트 초기화,[96] 미가동 인라인어셈블리[97])- 범위 사용
enum
s[36]. - 우주선[98][99] 운영자에 대한 여러 가지 변화
- DR: 모듈에 대한[100] 사소한 변경
constinit
키워드- 개념의 변화(개념의 변화)
-> Type
리턴[101] 타입 요건) - (대부분)
volatile
폐지되었습니다[58]. - DR:
[[nodiscard]]
컨스트럭터에[102] 미치는 영향 - 새로운 표준 라이브러리 개념은 Pascal Case를 사용하지 않습니다(오히려
standard_case
(표준 [103]라이브러리의 다른 부분과 같음) - 텍스트 형식[104][105](
chrono
통합,[106] 코너 케이스[107] 수정) - 비트[51] 조작
constexpr INVOKE
[108]- 수학[109] 상수
- 일관성이 더해져 있습니다.(
std::atomic_ref<T>
,[110]std::atomic<std::shared_ptr<T>>
)[111] 。 - 를 추가하다
<=>
표준[112] 라이브러리의 오퍼레이터 - 표준[113] 라이브러리의 헤더 유닛
- 동기 설비[114](효율적인 원자 대기 및 세마포,[115] 래치 및 장벽,[116] 개선에서 통합)
atomic_flag
소형[118] CPU로 C++를 구현할 수 없게 하지 마십시오.)[117] std::source_location
[119]constexpr
컨테이너(std::string
,[120]std::vector
)[121] 。std::stop_token
및 결합 나사산(std::jthread
) [122]。
2019년 11월 가을 회의(벨파스트)의 NB 의견 결정 과정에서 적용된 변경 사항은 다음과 같다.[123][124][125]
- Non-Type Template Parameters(NTTP)의 클래스 유형:사용자 정의 없음 제한
operator==
템플릿 인수 동일성의 의미가 에서 분리되었기 때문에 allowed는 삭제되었습니다.operator==
이것에 의해, 클래스 타입의 NTTP 의 어레이 멤버도 사용할 수 있습니다.[126] - 부동소수점 유형,[127] 포인터와 참조, 유니언 및 유니언 유사 클래스(어나니머스 유니언을 포함하는 클래스 유형)가 NTTP로 허용됩니다.
- 기능 ID에는 후속 요구 조항도 포함됩니다(P1971).
- 구속된 비템플릿 함수가 제거되었습니다.
<compare>
현재 프리랜딩 구현에서[128] 사용 가능std::span
stypedef가 에서 변경되었습니다.index_type
로.size_type
표준[129] 라이브러리의 나머지 부분과 일치한다.- 쾰른 회의의 결과로 개념의 이름이 변경됨에 따라 개념 특성이 변경되었습니다.
- 범위에 대한 몇 가지 수정 및 추가(P1456R1: 이동 [130]전용 뷰, P1391R4: 범위 컨스트럭터:
std::string_view
(문자의 [131]쌍으로 이루어진 생성자), P1394R4: 범위 생성자:std::span<ref>
,[132] P1870R1: 전송 범위 <T>가[133] 너무 미묘하다) - 의 초기화
std::atomic<T>
디폴트 및 리스트 [134]초기화로 동작하도록 변경되었습니다.std::latch
그리고.std::barrier
이제 새로운 멤버 함수를 통해 구현이 지원하는 최대 스레드 수를 보고할 수 있게 되었습니다.max()
std::weak_equality
그리고.std::strong_equality
더 이상 사용되지 않기 때문에 제거되었습니다.- 의 알고리즘
<numeric>
만들어지다constexpr
- C++20의 새로운 기능 또는 변경된 기능에 대한 기능 테스트 매크로가 누락되었습니다[135].
레퍼런스
- ^ "The Standard". isocpp.org. Retrieved 7 September 2020.
- ^ Sutter, Herb (2019-10-01). "P1000R3: C++ IS schedule" (PDF). Retrieved 2020-02-13.
- ^ Dusíková, Hana (2019-11-06). "N4817: 2020 Prague Meeting Invitation and Information" (PDF). Archived (PDF) from the original on 2019-12-29. Retrieved 2020-02-13.
- ^ "Current Status". isocpp.org. Retrieved 7 September 2020.
- ^ "C++20 Approved -- Herb Sutter". isocpp.org. Retrieved 8 September 2020.
- ^ "ISO/IEC 14882:2020".
- ^ "Why does the C++ standard ship every three years?". 13 July 2019.
- ^ "P0592R0: To boldly suggest an overall plan for C++20".
- ^ "P0606R0: Concepts Are Ready" (PDF).
- ^ "P1141R1 - Yet another approach for constrained declarations".
- ^ "N4720: Working Draft, Extensions to C++ for Modules" (PDF).
- ^ Tim Shen; Richard Smith. "Designated Initialization Wording".
- ^ Thomas Köppe. "Allow lambda capture [=, this]".
- ^ "Familiar template syntax for generic lambdas".
- ^ "Range-based for statements with initializer".
- ^ a b c "Trip Report: C++ Standards Meeting in Albuquerque, November 2017". There's Waldo!. 2017-11-20. Retrieved 2017-12-11.
- ^ "Wording for lambdas in unevaluated contexts" (PDF).
- ^ "Default constructible and assignable stateless lambdas" (PDF).
- ^ "Pack expansion in lambda init-capture". www.open-std.org. Retrieved 2017-12-11.
- ^ "Class Types in Non-Type Template Parameters" (PDF). www.open-std.org. 2018-06-06.
- ^ Nina Ranns; Daveed Vandevoorde. "Down with typename!".
- ^ "Language support for empty objects".
- ^ "Proposed wording for likely and unlikely attributes (Revision 5)".
- ^ "explicit(bool)". www.open-std.org. Retrieved 2018-11-13.
- ^ "Allowing Virtual Function Calls in Constant Expressions". www.open-std.org. Retrieved 2019-03-11.
- ^ "P1330R0 - Changing the active member of a union inside constexpr".
- ^ "P1002R0 - Try-catch blocks in constexpr functions" (PDF).
- ^ "P1327R0 - Allowing dynamic_cast, polymorphic typeid in Constant Expressions".
- ^ "P1006R1 - Constexpr in std::pointer_traits" (PDF).
- ^ "P1073R2 - Immediate functions".
- ^ "P1236R0: Alternative Wording for P0907R4 Signed Integers are Two's Complement".
- ^ "P0668R4: Revising the C++ memory model".
- ^ "P1091R1: Extending structured bindings to be more like variable declarations". www.open-std.org. Retrieved 2019-02-24.
- ^ "P1091R2: Extending structured bindings to be more like variable declarations". www.open-std.org. Retrieved 2019-02-24.
- ^ "N4649: Working Draft, Technical Specification on C++ Extensions for Coroutines" (PDF).
- ^ a b "P1099R5: Using Enum". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ a b "P1143R2: Adding the constinit keyword". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P0896R3" (PDF).
- ^ "Extending make_shared to Support Arrays".
- ^ Meredith, Alisdair; Sutter, Herb. "Revising atomic_shared_ptr for C++20". JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP. ISO. Retrieved 27 December 2018.
- ^ "Utility to convert a pointer to a raw pointer".
- ^ Howard E. Hinnant; Tomasz Kamiński. "Extending <chrono> to Calendars and Time Zones".
- ^ Neil MacIntosh; Stephan T. Lavavej. "span: bounds-safe views for sequences of objects".
- ^ Alisdair Meredith; Stephan T. Lavavej (2018-10-04). "Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20".
- ^ Alan Talbot. "<version>".
- ^ "Bit-casting object representations". www.open-std.org. Retrieved 2018-11-10.
- ^ "Integrating feature-test macros into the C++ WD". www.open-std.org. Retrieved 2018-11-10.
- ^ "P1032R1 - Misc constexpr bits".
- ^ "Smart pointer creation with default initialization".
- ^ Mikhail Maltsev. "P0458R2: Checking for Existence of an Element in Associative Containers".
- ^ a b "P0553R4: Bit operations". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P0556R3: Integral power-of-2 operations". www.open-std.org. 2018-06-06. Retrieved 2020-08-08.
- ^ "P1355R2 Exposing a narrow contract for ceil2". www.open-std.org. 2019-06-11. Retrieved 2020-08-08.
- ^ "On the names of low-level bit manipulation functions" (PDF). www.open-std.org. 2020-02-11. Retrieved 2020-08-08.
- ^ Tomasz Kamiński (2017-11-09). "Simplified partial function application".
- ^ "C++ keywords - cppreference.com". en.cppreference.com. Retrieved 2019-08-04.
- ^ "explicit specifier - cppreference.com". en.cppreference.com. Retrieved 2019-08-04.
- ^ a b c "P1152R4: Deprecating volatile". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "attribute specifier sequence(since C++11) - cppreference.com". en.cppreference.com. Retrieved 2019-08-04.
- ^ "Working Draft, Standard for Programming Language C++ (Annex C, §C.1)" (PDF).
- ^ a b "P1161R2: Deprecate uses of the comma operator in subscripting expressions". www.open-std.org. Retrieved 2019-07-20.
- ^ "C++ Extensions for Parallelism Version 2".
- ^ "Task Blocks".
- ^ "C++ Extensions for Reflection".
- ^ "C++ Extensions for Networking".
- ^ Sutter, Herb (2019-07-20). "Trip report: Summer ISO C++ standards meeting (Cologne)". Sutter's Mill. Retrieved 2019-07-21.
- ^ "Reflections on the reflection proposals - Meeting C++". meetingcpp.com. Retrieved 2017-06-30.
- ^ "Static reflection". www.open-std.org. Retrieved 2018-11-10.
- ^ Herb Sutter. "Metaclasses" (PDF).
- ^ "A Unified Executors Proposal for C++". www.open-std.org. Retrieved 2019-02-24.
- ^ "N4771: Working Draft, C++ Extensions for Networking" (PDF).
- ^ "ISO/IEC TS 19216:2018 Programming Languages -- C++ Extensions for Networking".
- ^ "A General Property Customization Mechanism". www.open-std.org. Retrieved 2019-02-24.
- ^ "A Unified Futures Proposal for C++".
- ^ "Clang - C++ Programming Language Status". clang.llvm.org. Retrieved 2022-04-19.
- ^ "C++ compiler support - cppreference.com". en.cppreference.com.
- ^ "Andrew Sutton - [PATCH] Add -std=c++2a". gcc.gnu.org. Retrieved 2022-04-19.
- ^ "C++ Standards Support in GCC - GNU Project". gcc.gnu.org. Retrieved 2022-04-19.
- ^ jawiddis. "Visual Studio 2019 version 16.10 Release Notes". docs.microsoft.com. Retrieved 2021-07-13.
- ^ "MSVC C++20 and the /std:c++20 Switch". docs.microsoft.com. Retrieved 2021-09-07.
- ^ Visual Studio documentation for Microsoft C++, Microsoft Docs, 2022-04-19, retrieved 2022-04-19
- ^ Herb Sutter. "Trip report: Summer ISO C++ standards meeting (Toronto)".
- ^ Andrew Sutton; Bjarne Stroustrup (2013-02-24). "Concepts Lite: Constraining Templates with Predicates". isocpp.org. isocpp.org. Retrieved 2021-01-13.
- ^ Herb Sutter. "Trip report: Fall ISO C++ standards meeting (Albuquerque)".
- ^ Smith, Richard; Perchik, Dawn; Köppe, Thomas. "N4714 Editors' Report -- Programming Languages -- C++". C++ standards drafts. GitHub. Retrieved 27 December 2018.
- ^ Botond Ballo. "Trip Report: C++ Standards Meeting in Jacksonville, March 2018".
- ^ Herb Sutter. "Trip report: Summer ISO C++ standards meeting (Rapperswil)".
- ^ "Support for contract based programming in C++". www.open-std.org. Retrieved 2018-11-10.
- ^ "P1289R0 - Access control in contract conditions" (PDF).
- ^ "r/cpp - 2019-02 Kona ISO C++ Committee Trip Report (C++20 design is complete; Modules in C++20; Coroutines in C++20; Reflection TS v1 published; work begins on a C++ Ecosystem Technical Report)". reddit. Retrieved 2019-02-24.
- ^ "Trip report: Winter ISO C++ standards meeting (Kona)". Sutter's Mill. 2019-02-23. Retrieved 2019-02-24.
- ^ "r/cpp - 2019-07 Cologne ISO C++ Committee Trip Report — 🚀 The C++20 Eagle has Landed 🚀 (C++20 Committee Draft shipped; Contracts Moved From C++20 to a Study Group; 'std::format' in C++20; C++20 Synchronization Library)". reddit. Retrieved 2019-09-15.
- ^ Botond Ballo. "Trip Report: C++ Standards Meeting in Cologne, July 2019".
- ^ Sutter, Herb. "Trip report: Summer ISO C++ standards meeting (Cologne)".
- ^ Josuttis, Nicolai. "P1823R0: Remove Contracts from C++20" (PDF).
- ^ "Permitting trivial default initialization in constexpr contexts" (PDF).
- ^ "P1668R1: Enabling Constexpr Intrinsics By Permitting Unevaluated inline-asm in Constexpr Functions". www.open-std.org. Retrieved 2019-07-20.
- ^ "P1186R3: When do you actually use <=>?". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1630R1: Spaceship needs a tune-up". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1766R1: Mitigating minor modules maladies". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1452R2: On the non-uniform semantics of return-type-requirements". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1771R1: nodiscard for constructors" (PDF). www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1754R1: Rename concepts to standard_case for C++20, while we still can" (PDF). www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P0645R10: Text Formatting". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "std::format in C++20". www.zverovich.net. 2019-07-23. Retrieved 2019-09-15.
- ^ "P1361R2: Integration of chrono with text formatting" (PDF). www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1652R1: Printf corner cases in std::format". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1965R2: constexpr INVOKE". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P0631R8: Math Constants" (PDF). www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1643R1: Add wait/notify to atomic_ref<T>". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1664R0: Add wait/notify to atomic<shared_ptr<T>>". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1614R2: The Mothership has Landed - Adding <=> to the Library". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1502R1: Standard library header units for C++20". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P1135R6: The C++20 Synchronization Library". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
- ^ "P0514R4: Efficient concurrent waiting for C++20" (PDF).
- ^ "P0666R2: Revised Latches and Barriers for C++20" (PDF).
- ^ "P0995R1: Improving atomic_flag".
- ^ "P1285R0: Don't Make C++ Unimplementable On Small CPUs".
- ^ "P1208R6: Adopt source_location from Library Fundamentals V3 for C++20" (PDF).
- ^ "P0980R1: Making std::string constexpr" (PDF).
- ^ "P1004R2: Making std::vector constexpr" (PDF).
- ^ "P0660R10: Stop Token and Joining Thread" (PDF).
- ^ "r/cpp - 2019-11 Belfast ISO C++ Committee Trip Report — Started Processing Feedback on the C++20 Committee Draft; ABI Review Group Formed". reddit. Retrieved 2019-11-09.
- ^ Sutter, Herb (2019-11-09). "Trip report: Autumn ISO C++ standards meeting (Belfast)". Sutter's Mill. Retrieved 2019-11-09.
- ^ botondballo (2019-11-15). "Trip Report: C++ Standards Meeting in Belfast, November 2019". There's Waldo!. Retrieved 2019-11-24.
- ^ "P1907R0: Inconsistencies with non-type template parameters". www.open-std.org. 2019-10-07. Retrieved 2019-11-09.
- ^ "P1714: NTTP are incomplete without float, double, and long double! (Revision 1)". www.open-std.org. 2019-07-19. Retrieved 2019-11-09.
- ^ "P1855R=: Make <compare> freestanding". www.open-std.org. 2019-10-05. Retrieved 2019-11-09.
- ^ "P1872R0: span should have size_type not index_type" (PDF). www.open-std.org. 2019-09-16. Retrieved 2019-11-09.
- ^ "P1456: Move-only views" (PDF). www.open-std.org. 2019-01-25. Retrieved 2019-11-09.
- ^ "P1391: Range constructor for std::string_view" (PDF). www.open-std.org. Retrieved 2019-11-09.
- ^ "P1394: Range constructor for std::span" (PDF). www.open-std.org. 2019-08-02. Retrieved 2019-11-09.
- ^ "P1870R1: forwarding-range<T> is too subtle". www.open-std.org. Retrieved 2019-11-09.
- ^ "P0883: Fixing Atomic Initialization" (PDF). www.open-std.org. 2018-06-05. Retrieved 2019-11-09.
- ^ "Missing feature-test macros 2018-2019". www.open-std.org. 2019-10-06. Retrieved 2019-11-09.
외부 링크
- ISO 온라인 스토어에서 ISO/IEC 14882:2020을 구입하는 링크.
- N4860, 표준의 최종 초안 버전.
- JTC1/SC22/WG21 – ISO/IEC C++ 표준 작업 그룹 (C++ 표준 위원회)
- 범위(range-v3) GitHub 저장소, Eric Niebler 작성