C++20

C++20

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스코프로enums[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]그리고.explicitC++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.

사용되지 않는 기능:

  • 첨자 식에 쉼표 연산자를 사용하는 것이 더 이상[61] 권장되지 않습니다.
  • (대부분)volatile폐지되었습니다[58].

기술사양서 발행

  • 병렬 TS v2[62](태스크[63] 블록 포함)
  • 반사 TS v1[64]
  • 네트워크 TS v1[65]

이후 표준으로 이연됨

  • 계약 – 새로운[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++2aClang과 마찬가지로 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]

  • 코루틴
  • 모듈
  • 구조화된 바인딩의 다양한 개선(람다 포획과의 상호작용,static그리고.thread_local보관 기간)

2019년 7월 여름 회의에서 C++20 작업 초안에 적용된 변경 사항은 다음과 같습니다([92][93][94]Cologne).

  • 계약이 삭제되었습니다(나중[95]표준에 따라 보류된 기능 목록 참조).
  • 첨자 식에서 쉼표 연산자의 사용이 권장되지[61] 않습니다.
  • constexpradditions(디폴트 초기화,[96] 미가동 인라인어셈블리[97])
  • 범위 사용enums[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::spanstypedef가 에서 변경되었습니다.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].

레퍼런스

  1. ^ "The Standard". isocpp.org. Retrieved 7 September 2020.
  2. ^ Sutter, Herb (2019-10-01). "P1000R3: C++ IS schedule" (PDF). Retrieved 2020-02-13.
  3. ^ 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.
  4. ^ "Current Status". isocpp.org. Retrieved 7 September 2020.
  5. ^ "C++20 Approved -- Herb Sutter". isocpp.org. Retrieved 8 September 2020.
  6. ^ "ISO/IEC 14882:2020".
  7. ^ "Why does the C++ standard ship every three years?". 13 July 2019.
  8. ^ "P0592R0: To boldly suggest an overall plan for C++20".
  9. ^ "P0606R0: Concepts Are Ready" (PDF).
  10. ^ "P1141R1 - Yet another approach for constrained declarations".
  11. ^ "N4720: Working Draft, Extensions to C++ for Modules" (PDF).
  12. ^ Tim Shen; Richard Smith. "Designated Initialization Wording".
  13. ^ Thomas Köppe. "Allow lambda capture [=, this]".
  14. ^ "Familiar template syntax for generic lambdas".
  15. ^ "Range-based for statements with initializer".
  16. ^ a b c "Trip Report: C++ Standards Meeting in Albuquerque, November 2017". There's Waldo!. 2017-11-20. Retrieved 2017-12-11.
  17. ^ "Wording for lambdas in unevaluated contexts" (PDF).
  18. ^ "Default constructible and assignable stateless lambdas" (PDF).
  19. ^ "Pack expansion in lambda init-capture". www.open-std.org. Retrieved 2017-12-11.
  20. ^ "Class Types in Non-Type Template Parameters" (PDF). www.open-std.org. 2018-06-06.
  21. ^ Nina Ranns; Daveed Vandevoorde. "Down with typename!".
  22. ^ "Language support for empty objects".
  23. ^ "Proposed wording for likely and unlikely attributes (Revision 5)".
  24. ^ "explicit(bool)". www.open-std.org. Retrieved 2018-11-13.
  25. ^ "Allowing Virtual Function Calls in Constant Expressions". www.open-std.org. Retrieved 2019-03-11.
  26. ^ "P1330R0 - Changing the active member of a union inside constexpr".
  27. ^ "P1002R0 - Try-catch blocks in constexpr functions" (PDF).
  28. ^ "P1327R0 - Allowing dynamic_cast, polymorphic typeid in Constant Expressions".
  29. ^ "P1006R1 - Constexpr in std::pointer_traits" (PDF).
  30. ^ "P1073R2 - Immediate functions".
  31. ^ "P1236R0: Alternative Wording for P0907R4 Signed Integers are Two's Complement".
  32. ^ "P0668R4: Revising the C++ memory model".
  33. ^ "P1091R1: Extending structured bindings to be more like variable declarations". www.open-std.org. Retrieved 2019-02-24.
  34. ^ "P1091R2: Extending structured bindings to be more like variable declarations". www.open-std.org. Retrieved 2019-02-24.
  35. ^ "N4649: Working Draft, Technical Specification on C++ Extensions for Coroutines" (PDF).
  36. ^ a b "P1099R5: Using Enum". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  37. ^ a b "P1143R2: Adding the constinit keyword". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  38. ^ "P0896R3" (PDF).
  39. ^ "Extending make_shared to Support Arrays".
  40. ^ Meredith, Alisdair; Sutter, Herb. "Revising atomic_shared_ptr for C++20". JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP. ISO. Retrieved 27 December 2018.
  41. ^ "Utility to convert a pointer to a raw pointer".
  42. ^ Howard E. Hinnant; Tomasz Kamiński. "Extending <chrono> to Calendars and Time Zones".
  43. ^ Neil MacIntosh; Stephan T. Lavavej. "span: bounds-safe views for sequences of objects".
  44. ^ Alisdair Meredith; Stephan T. Lavavej (2018-10-04). "Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20".
  45. ^ Alan Talbot. "<version>".
  46. ^ "Bit-casting object representations". www.open-std.org. Retrieved 2018-11-10.
  47. ^ "Integrating feature-test macros into the C++ WD". www.open-std.org. Retrieved 2018-11-10.
  48. ^ "P1032R1 - Misc constexpr bits".
  49. ^ "Smart pointer creation with default initialization".
  50. ^ Mikhail Maltsev. "P0458R2: Checking for Existence of an Element in Associative Containers".
  51. ^ a b "P0553R4: Bit operations". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  52. ^ "P0556R3: Integral power-of-2 operations". www.open-std.org. 2018-06-06. Retrieved 2020-08-08.
  53. ^ "P1355R2 Exposing a narrow contract for ceil2". www.open-std.org. 2019-06-11. Retrieved 2020-08-08.
  54. ^ "On the names of low-level bit manipulation functions" (PDF). www.open-std.org. 2020-02-11. Retrieved 2020-08-08.
  55. ^ Tomasz Kamiński (2017-11-09). "Simplified partial function application".
  56. ^ "C++ keywords - cppreference.com". en.cppreference.com. Retrieved 2019-08-04.
  57. ^ "explicit specifier - cppreference.com". en.cppreference.com. Retrieved 2019-08-04.
  58. ^ a b c "P1152R4: Deprecating volatile". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  59. ^ "attribute specifier sequence(since C++11) - cppreference.com". en.cppreference.com. Retrieved 2019-08-04.
  60. ^ "Working Draft, Standard for Programming Language C++ (Annex C, §C.1)" (PDF).
  61. ^ a b "P1161R2: Deprecate uses of the comma operator in subscripting expressions". www.open-std.org. Retrieved 2019-07-20.
  62. ^ "C++ Extensions for Parallelism Version 2".
  63. ^ "Task Blocks".
  64. ^ "C++ Extensions for Reflection".
  65. ^ "C++ Extensions for Networking".
  66. ^ Sutter, Herb (2019-07-20). "Trip report: Summer ISO C++ standards meeting (Cologne)". Sutter's Mill. Retrieved 2019-07-21.
  67. ^ "Reflections on the reflection proposals - Meeting C++". meetingcpp.com. Retrieved 2017-06-30.
  68. ^ "Static reflection". www.open-std.org. Retrieved 2018-11-10.
  69. ^ Herb Sutter. "Metaclasses" (PDF).
  70. ^ "A Unified Executors Proposal for C++". www.open-std.org. Retrieved 2019-02-24.
  71. ^ "N4771: Working Draft, C++ Extensions for Networking" (PDF).
  72. ^ "ISO/IEC TS 19216:2018 Programming Languages -- C++ Extensions for Networking".
  73. ^ "A General Property Customization Mechanism". www.open-std.org. Retrieved 2019-02-24.
  74. ^ "A Unified Futures Proposal for C++".
  75. ^ "Clang - C++ Programming Language Status". clang.llvm.org. Retrieved 2022-04-19.
  76. ^ "C++ compiler support - cppreference.com". en.cppreference.com.
  77. ^ "Andrew Sutton - [PATCH] Add -std=c++2a". gcc.gnu.org. Retrieved 2022-04-19.
  78. ^ "C++ Standards Support in GCC - GNU Project". gcc.gnu.org. Retrieved 2022-04-19.
  79. ^ jawiddis. "Visual Studio 2019 version 16.10 Release Notes". docs.microsoft.com. Retrieved 2021-07-13.
  80. ^ "MSVC C++20 and the /std:c++20 Switch". docs.microsoft.com. Retrieved 2021-09-07.
  81. ^ Visual Studio documentation for Microsoft C++, Microsoft Docs, 2022-04-19, retrieved 2022-04-19
  82. ^ Herb Sutter. "Trip report: Summer ISO C++ standards meeting (Toronto)".
  83. ^ Andrew Sutton; Bjarne Stroustrup (2013-02-24). "Concepts Lite: Constraining Templates with Predicates". isocpp.org. isocpp.org. Retrieved 2021-01-13.
  84. ^ Herb Sutter. "Trip report: Fall ISO C++ standards meeting (Albuquerque)".
  85. ^ Smith, Richard; Perchik, Dawn; Köppe, Thomas. "N4714 Editors' Report -- Programming Languages -- C++". C++ standards drafts. GitHub. Retrieved 27 December 2018.
  86. ^ Botond Ballo. "Trip Report: C++ Standards Meeting in Jacksonville, March 2018".
  87. ^ Herb Sutter. "Trip report: Summer ISO C++ standards meeting (Rapperswil)".
  88. ^ "Support for contract based programming in C++". www.open-std.org. Retrieved 2018-11-10.
  89. ^ "P1289R0 - Access control in contract conditions" (PDF).
  90. ^ "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.
  91. ^ "Trip report: Winter ISO C++ standards meeting (Kona)". Sutter's Mill. 2019-02-23. Retrieved 2019-02-24.
  92. ^ "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.
  93. ^ Botond Ballo. "Trip Report: C++ Standards Meeting in Cologne, July 2019".
  94. ^ Sutter, Herb. "Trip report: Summer ISO C++ standards meeting (Cologne)".
  95. ^ Josuttis, Nicolai. "P1823R0: Remove Contracts from C++20" (PDF).
  96. ^ "Permitting trivial default initialization in constexpr contexts" (PDF).
  97. ^ "P1668R1: Enabling Constexpr Intrinsics By Permitting Unevaluated inline-asm in Constexpr Functions". www.open-std.org. Retrieved 2019-07-20.
  98. ^ "P1186R3: When do you actually use <=>?". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  99. ^ "P1630R1: Spaceship needs a tune-up". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  100. ^ "P1766R1: Mitigating minor modules maladies". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  101. ^ "P1452R2: On the non-uniform semantics of return-type-requirements". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  102. ^ "P1771R1: nodiscard for constructors" (PDF). www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  103. ^ "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.
  104. ^ "P0645R10: Text Formatting". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  105. ^ "std::format in C++20". www.zverovich.net. 2019-07-23. Retrieved 2019-09-15.
  106. ^ "P1361R2: Integration of chrono with text formatting" (PDF). www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  107. ^ "P1652R1: Printf corner cases in std::format". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  108. ^ "P1965R2: constexpr INVOKE". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  109. ^ "P0631R8: Math Constants" (PDF). www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  110. ^ "P1643R1: Add wait/notify to atomic_ref<T>". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  111. ^ "P1664R0: Add wait/notify to atomic<shared_ptr<T>>". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  112. ^ "P1614R2: The Mothership has Landed - Adding <=> to the Library". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  113. ^ "P1502R1: Standard library header units for C++20". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  114. ^ "P1135R6: The C++20 Synchronization Library". www.open-std.org. 2019-07-20. Retrieved 2019-07-20.
  115. ^ "P0514R4: Efficient concurrent waiting for C++20" (PDF).
  116. ^ "P0666R2: Revised Latches and Barriers for C++20" (PDF).
  117. ^ "P0995R1: Improving atomic_flag".
  118. ^ "P1285R0: Don't Make C++ Unimplementable On Small CPUs".
  119. ^ "P1208R6: Adopt source_location from Library Fundamentals V3 for C++20" (PDF).
  120. ^ "P0980R1: Making std::string constexpr" (PDF).
  121. ^ "P1004R2: Making std::vector constexpr" (PDF).
  122. ^ "P0660R10: Stop Token and Joining Thread" (PDF).
  123. ^ "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.
  124. ^ Sutter, Herb (2019-11-09). "Trip report: Autumn ISO C++ standards meeting (Belfast)". Sutter's Mill. Retrieved 2019-11-09.
  125. ^ botondballo (2019-11-15). "Trip Report: C++ Standards Meeting in Belfast, November 2019". There's Waldo!. Retrieved 2019-11-24.
  126. ^ "P1907R0: Inconsistencies with non-type template parameters". www.open-std.org. 2019-10-07. Retrieved 2019-11-09.
  127. ^ "P1714: NTTP are incomplete without float, double, and long double! (Revision 1)". www.open-std.org. 2019-07-19. Retrieved 2019-11-09.
  128. ^ "P1855R=: Make <compare> freestanding". www.open-std.org. 2019-10-05. Retrieved 2019-11-09.
  129. ^ "P1872R0: span should have size_type not index_type" (PDF). www.open-std.org. 2019-09-16. Retrieved 2019-11-09.
  130. ^ "P1456: Move-only views" (PDF). www.open-std.org. 2019-01-25. Retrieved 2019-11-09.
  131. ^ "P1391: Range constructor for std::string_view" (PDF). www.open-std.org. Retrieved 2019-11-09.
  132. ^ "P1394: Range constructor for std::span" (PDF). www.open-std.org. 2019-08-02. Retrieved 2019-11-09.
  133. ^ "P1870R1: forwarding-range<T> is too subtle". www.open-std.org. Retrieved 2019-11-09.
  134. ^ "P0883: Fixing Atomic Initialization" (PDF). www.open-std.org. 2018-06-05. Retrieved 2019-11-09.
  135. ^ "Missing feature-test macros 2018-2019". www.open-std.org. 2019-10-06. Retrieved 2019-11-09.

외부 링크