맨위로가기

C++20

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
목차

1. 개요

C++20은 2020년에 발표된 C++ 프로그래밍 언어의 표준이다. 주요 언어 기능으로는 콘셉트, 모듈, 지정 생성자, 람다 표현식 개선, 우주선 연산자, 범위 기반 for 문 개선, 평가되지 않은 컨텍스트에서의 람다, 기본 생성 및 할당 가능한 상태 비저장 람다, 템플릿 매개변수로서의 문자열 리터럴, constinit, consteval, co_await, co_return, co_yield, requires, export (의미 변경), UTF-8 지원을 위한 char8_t 등이 추가되었고, explicit는 표현식을 사용할 수 있게 되었다. 표준 라이브러리에는 어토믹 스마트 포인터, 확장된 future, 래치와 배리어, 네트워킹 확장, 범위, 태스크 블록, std::to_address, 달력 및 시간대, std::span, 헤더, std::bit_cast, 기능 테스트 매크로, constexpr 라이브러리 기능 확장, 수학 상수, 동기화 기능, std::source_location, constexpr 컨테이너, std::stop_token 및 스레드 조인 등이 추가되었다. 주요 컴파일러로는 Visual Studio 2019, GCC, Clang 등이 C++20을 지원한다.

더 읽어볼만한 페이지

  • 프로그래밍 언어 표준 - ISO/IEC JTC 1/SC 22
    ISO/IEC JTC 1/SC 22는 프로그래밍 언어, 환경 및 시스템 소프트웨어 인터페이스 분야의 표준화를 담당하는 ISO/IEC JTC 1의 하위 위원회이며, 다양한 프로그래밍 언어와 시스템 소프트웨어 인터페이스의 표준화를 목표로 1985년에 설립되었다.
  • 프로그래밍 언어 표준 - C99
    C99는 1999년 ISO/IEC 9899:1999로 출판된 C 프로그래밍 언어의 표준으로, 인라인 함수, 가변 길이 배열, `//` 주석 등 새로운 기능들을 추가하고 IEEE 부동소수점 자료 지원을 개선했으며 C90과 하위 호환성을 가지면서 C++와의 호환성을 고려했다.
  • C++ - 헤더 파일
    헤더 파일은 프로그래밍 언어에서 코드 재사용성, 모듈화, 컴파일 시간 단축에 기여하며 함수 프로토타입, 변수 선언 등을 포함하고 `#include` 지시어로 소스 코드에 포함되어 사용되는 파일이다.
  • C++ - 소멸자 (컴퓨터 프로그래밍)
    소멸자는 객체가 메모리에서 제거되기 직전에 호출되는 멤버 함수로, 객체 자원 해제 및 정리 작업을 수행하며, C++ 등 여러 언어에서 구현되고 메모리 누수 방지에 기여한다.
C++20
C++20 정보
이름C++20
표준ISO/IEC 14882:2020
발표일2020년 12월
후속C++23
주요 특징
코루틴지원
모듈지원
개념지원
범위지원
지정된 초기화지원
constexpr 확장지원
이전 버전과의 호환성
하위 호환성유지

2. 언어 기능

2017년 7월에 C++20의 초안에 포함되기로 건의된 항목 중 하나이다.[294] 콘셉트는 C++ 템플릿 프로그래밍에서 템플릿 인자에 대한 제약 조건을 지정하는 기능으로, 컴파일 시간에 템플릿 인자의 적합성을 검사할 수 있게 해준다.[295] 또한 C++20에서는 `concept` 키워드가 추가되었다.[55]

2. 1. 콘셉트 (Concepts)

2017년 7월에 C++20의 초안에 포함되기로 건의된 항목 중 하나이다.[294] 콘셉트는 C++ 템플릿 프로그래밍에서 템플릿 인자에 대한 제약 조건을 지정하는 기능으로, 컴파일 시간에 템플릿 인자의 적합성을 검사할 수 있게 해준다.[295] 또한 C++20에서는 `concept` 키워드가 추가되었다.[55]

2. 2. 모듈 (Modules)

C++11 이후 C++ 표준 위원회는 3년 주기로 C++ 표준을 발표하기로 결정하였는데, 이에 따라 2020년에 발표될 C++ 표준은 C++20 이라 불리게 되었다.

2017년 7월에 C++20의 초안에 콘셉트,[295] 지정 생성자,[296] 람다 갈무리에 `[=, this]` 사용,[297] 람다에서 템플릿 파라미터 리스트 사용[298] 등이 포함되기로 건의되었다.[294]

2017년 11월 가을 회의에서는 우주선 연산자(`operator <=>`)를 이용한 세갈래 비교, 범위 기반 `for`문 안에서 추가 변수 초기화, `memcpy()`보다 덜 장황하면서 컴파일러 내부를 활용할 수 있게 해주는 비트 단위 객체 복사, `std::shared_ptr`를 위한 `std::atomic`의 특수화, 평가되지 않은 콘텍스트에서의 람다,[300][301] 생성과 할당이 가능하고 상태가 없는 기본 람다,[302] 람다 init-capture에서 pack expansion 지원,[303] 템플릿 파라미터에서 문자열 리터럴 사용[304] 등이 C++20에 추가될 항목으로 건의되었다.[299]

그 외에도 코루틴,[305] 모듈,[307] 트랜잭셔널 메모리,[310] 리플렉션,[311] 메타클래스[312] 등이 C++20에 포함될 가능성이 있는 항목으로 논의되었다.

C++20에는 `concept`, `constinit`,[37] `consteval`, `co_await`, `co_return`, `co_yield`, `requires`, `export` (의미 변경), UTF-8 지원을 위한 `char8_t`[55] 등의 새로운 키워드가 추가되었고, `explicit`는 표현식을 사용할 수 있게 되었다.[56] `volatile` 키워드의 대부분의 사용법은 더 이상 사용되지 않게 되었다.[105]

키워드 외에도 `import` 및 `module`을 포함한 '특수한 의미를 가진 식별자'가 있다.

C++20의 새로운 속성으로는 `likely`, `unlikely`, `no_unique_address`가 있다.[57]

2. 3. 지정 초기화 (Designated Initializers)

C++20 초안에는 C99의 기능을 기반으로 한 지정 생성자(designated initializer)가 포함되기로 건의되었다.[294][296]

2. 4. 람다 표현식 개선 (Lambda Expression Improvements)

C++20 초안에는 람다 갈무리에 `[=, this]`를 사용할 수 있게 되었다.[297] 또한 람다에서 템플릿 파라미터 리스트를 사용하는 것이 가능해졌다.[298]

가을 회의에서는 평가되지 않은 콘텍스트에서의 람다,[300][301] 생성과 할당이 가능하고 상태가 없는 기본 람다,[302] 람다 init-capture에서 pack expansion 지원[303] 등이 C++20에 추가될 기능으로 건의되었다.

2. 5. 우주선 연산자 (Spaceship Operator)

2017년 11월에 열린 가을 회의에서 C++20에 우주선 연산자(`operator <=>`)를 이용한 세갈래 비교(Three-way comparison)를 추가하는 것이 건의되었다.[299] C++20에는 `operator <=> `를 포함하여 여러 새로운 키워드가 추가되었다.[55]

2. 6. 범위 기반 for 문 개선 (Range-based for Loop Improvements)

2017년 11월에 열린 가을 회의에서 C++20에 추가하기로 건의된 항목 중 하나로, 범위 기반 `for` 문 안에서 추가 변수의 초기화가 가능하게 되었다.[299]

2. 7. 평가되지 않은 컨텍스트에서의 람다 (Lambdas in Unevaluated Contexts)

C++20 초안에는 평가되지 않은 컨텍스트에서의 람다[300][301] 사용이 포함되도록 건의되었다.[294] 이는 2017년 11월 가을 회의에서 C++20에 추가하기로 결정된 항목 중 하나이다.[299]

2. 8. 기본 생성 및 할당 가능한 상태 비저장 람다 (Default Constructible and Assignable Stateless Lambdas)

2017년 11월에 열린 가을 회의에서 C++20에 추가하기로 건의된 항목 중 하나로, 생성과 할당이 가능하고 상태가 없는 기본 람다가 있다.[302]

2. 9. 템플릿 매개변수로서의 문자열 리터럴 (String Literals as Template Parameters)

2017년 11월에 열린 가을 회의에서 C++20에 템플릿 파라미터에서 문자열 리터럴 사용 가능 기능이 추가 건의되었다.[304]

2. 10. `typename` 키워드 필요성 제거

C++20에는 많은 새로운 키워드가 추가되었으며 (새로운 "우주선 연산자"인 `operator <=> ` 포함), 예를 들어 `concept`, `constinit`[37], `consteval`, `co_await`, `co_return`, `co_yield`, `requires` (더불어 `export`의 의미 변경), 그리고 UTF-8 지원을 위한 `char8_t`가 있다.[55] 또한 C++20부터 `explicit`는 표현식을 사용할 수 있게 되었다.[56] `volatile` 키워드의 대부분의 사용법은 더 이상 사용되지 않게 되었다.[105]

키워드 외에도 새로운 `import` 및 `module`을 포함한 ''특수한 의미를 가진 식별자''가 있다.

C++20의 새로운 속성:

`likely`, `unlikely` 및 `no_unique_address`[57]

2017년 7월에 C++20의 초안에 포함되기로 건의된 항목들은 다음과 같다.[294]

  • 콘셉트[295]
  • 지정 생성자[296] (designated initializer, C99의 기능 기반)
  • 람다 갈무리(capture)에 `[=, this]` 사용 가능[297]
  • 람다에서 템플릿 파라미터 리스트 사용[298]


2017년 11월에 열린 가을 회의에서 C++20에 추가하기로 건의된 항목들은 다음과 같다.[299]

  • 우주선 연산자(`operator <=>`)를 이용한 세갈래 비교(Three-way comparison)
  • 범위 기반 `for`문 안에서 추가 변수의 초기화
  • `memcpy()`보다 덜 장황하면서 컴파일러 내부를 활용할 수 있게 해주는 비트 단위 객체 복사(Bit-casting of object representations)
  • `std::shared_ptr`를 위한 `std::atomic`의 특수화
  • 평가되지 않은 콘텍스트에서의 람다[300][301]
  • 생성과 할당이 가능하고 상태가 없는 기본 람다[302]
  • 람다 init-capture에서 pack expansion을 지원[303]
  • 템플릿 파라미터에서 문자열 리터럴 사용 가능[304]


그 외 가능성이 있는 항목들은 다음과 같다.

2. 11. 새로운 표준 속성 (New Standard Attributes)

C++20에는 likely, unlikely, no_unique_address와 같은 새로운 표준 속성이 추가되었다.[57][195]

2. 12. 조건부 `explicit` (Conditional `explicit`)

C++20부터 `explicit`는 표현식을 사용할 수 있게 되었다.[56][193]

2. 13. 확장된 `constexpr`

C++20에는 `constexpr`와 관련된 여러 기능들이 확장 및 추가되었다. 2017년 7월 회의에서는 람다에서 템플릿 파라미터 리스트를 사용할 수 있게 되었다.[298] 2017년 11월 가을 회의에서는 평가되지 않은 콘텍스트에서의 람다,[300][301] 생성과 할당이 가능하고 상태가 없는 기본 람다,[302] 람다 init-capture에서 pack expansion 지원,[303] 템플릿 파라미터에서 문자열 리터럴 사용 가능[304] 등의 기능들이 C++20에 추가될 것이 건의되었다.

2. 14. 즉시 실행 함수 (Immediate Functions)

C++20에는 `consteval` 키워드를 통해 즉시 실행 함수(Immediate Functions)를 지원한다.[37][192] `consteval`로 선언된 함수는 컴파일 시간에 실행되어 결과를 반환하며, 런타임에는 실행되지 않는다.

2017년 11월에 열린 가을 회의에서 C++20에 평가되지 않은 콘텍스트에서의 람다[300][301], 생성과 할당이 가능하고 상태가 없는 기본 람다[302], 람다 init-capture에서 pack expansion을 지원[303], 템플릿 파라미터에서 문자열 리터럴 사용 가능[304]등이 추가로 건의되었다.

2. 15. 부호 있는 정수의 2의 보수 표현 (Signed Integers as Two's Complement)

C++20 초안에는 여러 기능들이 포함되기로 건의되었다.[294] 2017년 11월 가을 회의에서 여러 항목들이 C++20에 추가 제안되었다.[299]

2. 16. 수정된 메모리 모델 (Revised Memory Model)

2017년 7월에 C++20의 초안에 포함되기로 건의된 항목들[294]과, 2017년 11월에 열린 가을 회의에서 C++20에 추가하기로 건의된 항목들[299]이 있다.

C++20에는 `concept`, `constinit`[37], `consteval`, `co_await`, `co_return`, `co_yield`, `requires` (더불어 `export`의 의미 변경), 그리고 UTF-8 지원을 위한 `char8_t`와 같은 많은 새로운 키워드가 추가되었다.[55] 새로운 "우주선 연산자"인 `operator <=>`도 포함된다. 또한 C++20부터 `explicit`는 표현식을 사용할 수 있게 되었다.[56] `volatile` 키워드의 대부분의 사용법은 더 이상 사용되지 않게 되었다.[105]

키워드 외에도 새로운 `import` 및 `module`을 포함한 ''특수한 의미를 가진 식별자''가 있다.

C++20의 새로운 속성으로는 `likely`, `unlikely` 및 `no_unique_address`가 있다.[57]

2. 17. 구조적 바인딩 개선 (Structured Binding Improvements)

C++20에서는 구조적 바인딩이 개선되었다.[294][299]

2. 18. 코루틴 (Coroutines)

C++20에는 코루틴[305]이 추가될 가능성이 있으며, Clang 5에서 시험적으로 지원하고 있다.[306] 코루틴 관련 키워드로 `co_await`, `co_return`, `co_yield`가 있다.

2. 19. 범위 지정 열거형에 `using` (Using Enum)

C++20에는 여러 새로운 기능들이 추가되었다.[294][299]

2. 20. `constinit` 키워드

C++20에는 `constinit` 키워드가 추가되었다.[37][191] 이 키워드는 컴파일 시간에 초기화되어야 하는 변수를 지정하는 데 사용된다.

3. 라이브러리 기능

C++20 표준 라이브러리에는 다음과 같은 기능들이 추가되었다.


  • 어토믹 스마트 포인터 (atomic smart pointers영어) (std::atomic_shared_ptr와 std::atomic_weak_ptr)[313]
  • 확장된 future영어[314]
  • 래치와 배리어[315]
  • 네트워킹 확장[316], async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등
  • 범위(range)[317]
  • 태스크 블록[318]
  • 배열용 `std::make_shared`영어 및 `std::allocate_shared`영어[39]
  • 원시 포인터로 변환하는 `std::to_address`영어[41]
  • ``영어에 대한 달력 및 시간대 추가[42]
  • 연속 배열에 대한 뷰를 제공하는 `std::span`영어 (`std::string_view`영어와 유사하지만 `span`영어은 참조된 시퀀스를 변경할 수 있음)[43]
  • 대부분의 표준 컨테이너에서 요소 지우기를 단순화하는 `std::erase`영어 및 `std::erase_if`영어[44]
  • ``영어 헤더[45]
  • `memcpy()`영어보다 간결하고 컴파일러 내부를 활용할 수 있는 기능이 더 많은 객체 표현의 형변환을 위한 `std::bit_cast<>'영어[46]
  • 기능 테스트 매크로[47]
  • 다양한 constexpr영어 라이브러리 비트[48]
  • 기본 초기화를 사용한 스마트 포인터 생성[49]
  • 연관 컨테이너용 `contains`영어 메서드[50]
  • 선행/후행 0/1 개수[112] 및 log2 연산과 같은 비트 연산[51][52][53]
  • `std::bind_front`영어[54]
  • 텍스트 형식(`std::format`영어,[108][109] `chrono`영어 통합,[110])
  • 수학 상수[114]
  • 동기화 기능 (병합 출처: 효율적인 원자 대기 및 세마포어,[120] 래치 및 장벽,[121])
  • `std::source_location`영어[124]
  • constexpr영어 컨테이너 (`std::string`영어,[125] `std::vector`영어[126])
  • `std::stop_token`영어 및 스레드 조인 (`std::jthread`영어)[127]

3. 1. 범위 (Ranges)

C++20은 범위(range)를 지원한다.[317]

3. 2. 배열을 위한 `std::make_shared` 및 `std::allocate_shared`

C++20에서는 배열을 위한 `std::make_shared` 및 `std::allocate_shared` 기능이 추가되지 않았다.[313][314][315][316][317][318]

3. 3. 원자 스마트 포인터 (Atomic Smart Pointers)

C++20은 `std::atomic_shared_ptr`와 `std::atomic_weak_ptr`를 통해 원자 스마트 포인터를 제공한다.[313]

3. 4. `std::to_address`

wikitext

C++20 표준 라이브러리에는 다음과 같은 기능들이 추가되었다.

  • 어토믹 스마트 포인터[313] (std::atomic_shared_ptrstd::atomic_weak_ptr)
  • 확장된 future[314]
  • 래치와 배리어[315]
  • 네트워킹 확장[316], async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등
  • 범위(range)[317]
  • 태스크 블록[318]

3. 5. `` 달력 및 시간대 (Calendar and Time Zone)

C++20 표준 라이브러리에는 `future`가 확장되었고,[314] 래치와 배리어가 추가되었다.[315] 또한, 네트워킹 기능이 확장되어 async, 기본적인 I/O 서비스, 타이머, 버퍼 및 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등을 지원한다.[316] 범위(range) 기능과[317] 태스크 블록도 포함되었다.[318]

3. 6. `std::span`

C++20에서는 범위(range) 기능이 추가되었다.[317]

3. 7. `` 헤더

C++20에서는 `` 헤더를 통해 다음과 같은 기능들이 추가되었다.[313][314][315][316][317][318]

  • 어토믹 스마트 포인터 (std::atomic_shared_ptrstd::atomic_weak_ptr)
  • 확장된 `future`
  • 래치와 배리어
  • 네트워킹 확장 (async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등)
  • 범위(range)
  • 태스크 블록

3. 8. `std::bit_cast`

wikitext

C++20 표준 라이브러리에는 다음과 같은 기능들이 추가되었다.

  • 어토믹 스마트 포인터 (std::atomic_shared_ptrstd::atomic_weak_ptr)[313]
  • 확장된 future[314]
  • 래치와 배리어[315]
  • 네트워킹 확장[316], async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등
  • 범위(range)[317]
  • 태스크 블록[318]

3. 9. 기능 테스트 매크로 (Feature Test Macros)

C++20 표준에는 여러 기능에 대한 기능 테스트 매크로가 포함되어 있다.[313][314][315][316][317][318] 여기에는 어토믹 스마트 포인터 (std::atomic_shared_ptrstd::atomic_weak_ptr), 확장된 `future`, 래치와 배리어, 네트워킹 확장 (async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등), 범위(range), 태스크 블록이 포함된다.

3. 10. `constexpr` 라이브러리 기능 확장

wikitable

기능설명
어토믹 스마트 포인터std::atomic_shared_ptrstd::atomic_weak_ptr[313]
확장된 futureC++20에서 확장된 future 기능[314]
래치와 배리어[315]
네트워킹 확장async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등[316]
범위(range)[317]
태스크 블록[318]


3. 11. 기본 초기화를 사용한 스마트 포인터 생성

C++20에서는 어토믹 스마트 포인터(std::atomic_shared_ptrstd::atomic_weak_ptr)가 추가되었다.[313] 또한 future가 확장되었고,[314] 래치와 배리어가 추가되었다.[315] 네트워킹 기능이 확장되어[316] async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등을 지원한다. 범위(range)와[317] 태스크 블록도[318] C++20에 포함된 기능이다.

3. 12. 연관 컨테이너의 `contains` 메서드

C++20에서는 제공되지 않는다.

3. 13. 비트 연산 (Bit Manipulation)

C++20 에서는 어토믹 스마트 포인터 (std::atomic_shared_ptrstd::atomic_weak_ptr)[313], 확장된 future[314], 래치와 배리어[315], 네트워킹 확장[316], 범위(range)[317], 그리고 태스크 블록[318] 기능이 추가/개선되었다. 네트워킹 확장은 async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등을 포함한다.[316]

3. 14. `std::bind_front`

wikitext

3. 15. 텍스트 서식 (Text Formatting)

C++20은 텍스트 서식 기능을 제공하지 않는다.[313][314][315][316][317][318]

3. 16. 수학 상수 (Mathematical Constants)

C++20에서는 표준 라이브러리에 다양한 수학 상수들이 추가되었다.

3. 17. 동기화 기능 (Synchronization Facilities)

C++20는 어토믹 스마트 포인터 (`std::atomic_shared_ptr`와 `std::atomic_weak_ptr`)[313], 확장된 `future`[314], 래치와 배리어[315]를 포함한 동기화 기능을 제공한다. 또한, 네트워킹 확장[316]을 통해 async, 기본적인 I/O 서비스, 타이머, 버퍼 및 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등을 지원한다. 범위(range)[317] 및 태스크 블록[318]도 제공된다.

3. 18. `std::source_location`

C++20는 어토믹 스마트 포인터([313] ( `std::atomic_shared_ptr`와 `std::atomic_weak_ptr`)), 확장된 `future`[314], 래치와 배리어[315], 네트워킹 확장[316], 범위(range)[317], 태스크 블록[318]등의 기능을 제공한다.

4. 컴파일러 지원

wikitext

'''완전 지원'''[71]


  • Visual Studio 2019는 버전 16.10.0부터 `/std:c++latest` 옵션을 통해 모든 C++20 기능을 지원한다.[72] C++20 모드를 활성화하는 `/std:c++20` 옵션은 버전 16.11.0에 추가되었다.[73][74]


마이크로소프트 컴파일러는 윈도우뿐만 아니라 리눅스, 안드로이드 및 iOS도 지원한다. 그러나 리눅스 개발의 경우 "Linux 개발용 Visual C++" 확장이 필요하다.[75]

'''부분 지원'''

  • Clang은 `-std=c++20` 옵션(버전 10 이상) 또는 `-std=c++2a` 옵션(버전 9 이하)으로 활성화할 수 있는 부분적인 C++20 지원을 제공한다.[76]
  • EDG는 버전 5.0에서 C++20 기능 구현을 시작했으며, 버전 6.1 현재 대부분의 C++20 핵심 언어 기능을 지원한다.[77]
  • GCC는 2017년에 `-std=c++2a` 옵션을 통해 버전 8에서 부분적이고 실험적인 C++20 지원을 추가했다.[78] Clang과 마찬가지로 GCC는 이 옵션을 버전 10에서 `-std=c++20`으로 대체했다. 또한 실험적인 C++20 지원 외에 GNU 확장을 활성화하는 옵션 `-std=gnu++20`도 있다.[79]

4. 1. Visual Studio

Visual Studio 2019는 버전 16.10.0부터 `/std:c++latest` 옵션을 통해 모든 C++20 기능을 지원한다.[71][72] C++20 모드를 활성화하는 `/std:c++20` 옵션은 버전 16.11.0에 추가되었다.[73][74]

마이크로소프트 컴파일러는 윈도우뿐만 아니라 리눅스, 안드로이드 및 iOS도 지원한다. 그러나 리눅스 개발의 경우 "Linux 개발용 Visual C++" 확장이 필요하다.[75]

4. 2. GCC

GCC는 2017년에 `-std=c++2a` 옵션을 통해 버전 8에서 부분적이고 실험적인 C++20 지원을 추가했다. Clang과 마찬가지로 GCC는 이 옵션을 버전 10에서 `-std=c++20`으로 대체했다. 또한 실험적인 C++20 지원 외에 GNU 확장을 활성화하는 옵션 `-std=gnu++20`도 있다.

4. 3. Clang

Clang은 `-std=c++20` 옵션(버전 10 이상) 또는 `-std=c++2a` 옵션(버전 9 이하)으로 활성화할 수 있는 부분적인 C++20 지원을 제공한다.[76]

5. 더불어민주당과 C++20 (대한민국 관점)

6. 향후 표준에서 제외된 기능

C에서 파생된 헤더인 ``, ``, ``, `` 및 ``는 C++에서 아무런 기능을 하지 않으므로 제거되었다. (C와의 호환성을 위해 해당 `<*.h>` 헤더는 남아있다.)[58] 예외 사양으로 `throw()`를 사용하는 것이 제거되었다.[58] 이전에 더 이상 사용되지 않던 라이브러리 기능 중 일부가 제거되었다.[58] 여기에는 `std::uncaught_exception`, `std::raw_storage_iterator`, `std::is_literal_type`, `std::is_literal_type_v`, `std::result_of` 및 `std::result_of_t`가 포함된다.[58]

첨자 표현식에서 쉼표 연산자를 사용하는 것은 더 이상 사용되지 않는다.[97] (대부분의) `volatile`은 더 이상 사용되지 않는다.[105]


  • 계약과 관련하여 새로운 제안을 연구하기 위해 새로운 연구 그룹(SG21)이 결성되었다.[62][281]
  • C++20에서는 리플렉션 기능이 연구되고 있다.[63][64][282] [283] 메타클래스에 대한 연구도 진행 중이다.[65][284]
  • C++20에서는 메타클래스 기능이 연구되었다.[65][284]
  • [실행자 (프로그래밍)|실행자] [66]
  • 네트워킹 확장,[67][68] 비동기, 기본 I/O 서비스, 타이머, 버퍼 및 버퍼 지향 스트림, 소켓, 인터넷 프로토콜 (실행자에 의해 차단됨) 포함
  • [프로퍼티 (프로그래밍)|프로퍼티] [69]
  • 확장된 [퓨처(프로그래밍)|퓨처] [70]
  • [실행기/익스큐터](executor)[285]
  • 비동기, 기본 I/O 서비스, 타이머, 버퍼, 버퍼 지향 스트림, 소켓, 인터넷 프로토콜(executor에 의해 차단됨)을 포함하는 네트워크 확장[286][287]
  • [프로퍼티/속성](property)[288]
  • 확장된 Future[289]

6. 1. 계약 (Contracts)

계약과 관련하여 새로운 제안을 연구하기 위해 새로운 연구 그룹(SG21)이 결성되었다.[62][281]

6. 2. 리플렉션 (Reflection)

C++20에서는 리플렉션 기능이 연구되고 있다.[63][64][282] [283] 메타클래스에 대한 연구도 진행 중이다.[65][284]

6. 3. 메타클래스 (Metaclasses)

C++20에서는 메타클래스 기능이 연구되었다.[65][284]

참조

[1] 웹사이트 The Standard https://isocpp.org/s[...] 2020-09-07
[2] 웹사이트 P1000R3: C++ IS schedule https://www.open-std[...] 2019-10-01
[3] 웹사이트 N4817: 2020 Prague Meeting Invitation and Information https://open-std.org[...] 2019-11-06
[4] 웹사이트 N4859 Editors' Report -- Programming Languages -- C++ https://www.open-std[...] 2023-09-22
[5] 웹사이트 Current Status https://isocpp.org/s[...] 2020-09-07
[6] 웹사이트 C++20 Approved -- Herb Sutter https://isocpp.org/b[...] 2020-09-08
[7] 웹사이트 ISO/IEC 14882:2020 https://www.iso.org/[...] 2020-12-16
[8] 웹사이트 Why does the C++ standard ship every three years? https://herbsutter.c[...] 2019-07-13
[9] 웹사이트 P0592R0: To boldly suggest an overall plan for C++20 https://www.open-std[...] 2017-05-06
[10] 웹사이트 P0606R0: Concepts Are Ready https://www.open-std[...] 2017-05-06
[11] 웹사이트 P1141R1 - Yet another approach for constrained declarations http://open-std.org/[...] 2018-11-11
[12] 웹사이트 N4720: Working Draft, Extensions to C++ for Modules https://isocpp.org/f[...] 2019-04-30
[13] 웹사이트 Designated Initialization Wording https://wg21.link/p0[...] 2017-07-16
[14] 웹사이트 Allow lambda capture [=, this] https://wg21.link/p0[...] 2017-07-16
[15] 웹사이트 Familiar template syntax for generic lambdas https://wg21.link/p0[...] 2017-07-16
[16] 웹사이트 Range-based for statements with initializer https://www.open-std[...] 2019-10-30
[17] 뉴스 Trip Report: C++ Standards Meeting in Albuquerque, November 2017 https://botondballo.[...] 2017-11-20
[18] 웹사이트 Wording for lambdas in unevaluated contexts https://www.open-std[...] 2017-12-11
[19] 웹사이트 Default constructible and assignable stateless lambdas https://www.open-std[...] 2017-12-11
[20] 웹사이트 Pack expansion in lambda init-capture https://www.open-std[...] 2017-12-11
[21] 웹사이트 Class Types in Non-Type Template Parameters https://www.open-std[...] 2018-06-06
[22] 웹사이트 Down with typename! https://www.open-std[...] 2019-05-18
[23] 웹사이트 Language support for empty objects https://www.open-std[...] 2019-08-04
[24] 웹사이트 Proposed wording for likely and unlikely attributes (Revision 5) https://www.open-std[...] 2019-05-18
[25] 웹사이트 explicit(bool) https://www.open-std[...] 2018-11-13
[26] 웹사이트 Allowing Virtual Function Calls in Constant Expressions https://www.open-std[...] 2019-03-11
[27] 웹사이트 P1330R0 - Changing the active member of a union inside constexpr https://wg21.link/p1[...] 2019-07-26
[28] 웹사이트 P1002R0 - Try-catch blocks in constexpr functions https://www.open-std[...] 2018-11-11
[29] 웹사이트 P1327R0 - Allowing dynamic_cast, polymorphic typeid in Constant Expressions https://wg21.link/p1[...] 2019-07-26
[30] 웹사이트 P1006R1 - Constexpr in std::pointer_traits https://www.open-std[...] 2018-11-11
[31] 웹사이트 P1073R2 - Immediate functions https://www.open-std[...] 2018-11-11
[32] 웹사이트 P1236R0: Alternative Wording for P0907R4 Signed Integers are Two's Complement https://www.open-std[...] 2018-11-11
[33] 웹사이트 P0668R4: Revising the C++ memory model https://www.open-std[...] 2018-11-11
[34] 웹사이트 P1091R1: Extending structured bindings to be more like variable declarations https://www.open-std[...] 2019-02-24
[35] 웹사이트 P1091R2: Extending structured bindings to be more like variable declarations https://www.open-std[...] 2019-02-24
[36] 웹사이트 N4649: Working Draft, Technical Specification for C++ Extensions for Coroutines https://www.open-std[...] 2017-05-06
[37] 웹사이트 P1143R2: Adding the constinit keyword http://open-std.org/[...] 2019-07-20
[38] 웹사이트 P0896R3 https://www.open-std[...] 2018-11-11
[39] 웹사이트 Extending make_shared to Support Arrays https://www.open-std[...] 2020-02-12
[40] 웹사이트 Revising atomic_shared_ptr for C++20 https://www.open-std[...] International Organization for Standardization 2018-12-27
[41] 웹사이트 Utility to convert a pointer to a raw pointer https://www.open-std[...] 2020-02-12
[42] 웹사이트 Extending to Calendars and Time Zones https://www.open-std[...] 2019-05-18
[43] 웹사이트 span: bounds-safe views for sequences of objects http://wg21.link/p01[...] 2019-05-18
[44] 웹사이트 Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 https://www.open-std[...] 2020-12-14
[45] 웹사이트 http://wg21.link/p07[...] 2019-05-18
[46] 웹사이트 Bit-casting object representations https://www.open-std[...] 2018-11-10
[47] 웹사이트 Integrating feature-test macros into the C++ WD (rev. 2) https://www.open-std[...] 2018-11-10
[48] 웹사이트 P1032R1 - Misc constexpr bits https://www.open-std[...] 2018-11-11
[49] 웹사이트 Smart pointer creation with default initialization https://www.open-std[...] 2020-02-12
[50] 웹사이트 P0458R2: Checking for Existence of an Element in Associative Containers https://www.open-std[...] 2022-01-02
[51] 웹사이트 P0556R3: Integral power-of-2 operations https://wg21.link/p0[...] 2020-08-08
[52] 웹사이트 P1355R2 Exposing a narrow contract for ceil2 https://www.open-std[...] 2020-08-08
[53] 웹사이트 On the names of low-level bit manipulation functions https://www.open-std[...] 2020-08-08
[54] 웹사이트 Simplified partial function application https://www.open-std[...] 2020-11-08
[55] 웹사이트 C++ keywords - cppreference.com https://en.cpprefere[...] 2019-08-04
[56] 웹사이트 explicit specifier - cppreference.com https://en.cpprefere[...] 2019-08-04
[57] 웹사이트 attribute specifier sequence(since C++11) - cppreference.com https://en.cpprefere[...] 2019-08-04
[58] 웹사이트 Working Draft, Standard for Programming Language C++ (Annex C, §C.1) http://open-std.org/[...] 2020-11-18
[59] 웹사이트 C++ Extensions for Parallelism Version 2 https://wg21.link/N4[...] 2019-07-09
[60] 웹사이트 C++ Extensions for Reflection https://wg21.link/N4[...] 2019-07-09
[61] 웹사이트 C++ Extensions for Networking https://wg21.link/N4[...] 2019-07-09
[62] 웹사이트 Trip report: Summer ISO C++ standards meeting (Cologne) https://herbsutter.c[...] 2019-07-21
[63] 웹사이트 Reflections on the reflection proposals - Meeting C++ https://meetingcpp.c[...] 2017-06-30
[64] 웹사이트 Static reflection https://www.open-std[...] 2018-11-10
[65] 웹사이트 Metaclasses https://www.open-std[...] 2017-07-23
[66] 웹사이트 A Unified Executors Proposal for C++ https://www.open-std[...] 2019-02-24
[67] 웹사이트 N4771: Working Draft, C++ Extensions for Networking https://www.open-std[...] 2019-03-23
[68] 웹사이트 ISO/IEC TS 19216:2018 Programming Languages -- C++ Extensions for Networking https://www.iso.org/[...] 2018-12-17
[69] 웹사이트 A General Property Customization Mechanism https://www.open-std[...] 2019-02-24
[70] 웹사이트 A Unified Futures Proposal for C++ https://wg21.link/P1[...] 2019-07-08
[71] 웹사이트 C++ compiler support - cppreference.com https://en.cpprefere[...] 2022-08-12
[72] 웹사이트 Visual Studio 2019 version 16.10 Release Notes https://docs.microso[...] 2021-07-13
[73] 웹사이트 MSVC C++20 and the /std:c++20 Switch https://devblogs.mic[...] 2021-09-07
[74] 간행물 Visual Studio documentation for Microsoft C++ https://github.com/M[...] Microsoft Docs 2022-04-19
[75] 웹사이트 Visual Studio 2019 Compatibility https://docs.microso[...] 2022-08-12
[76] 웹사이트 Clang - C++ Programming Language Status https://clang.llvm.o[...] 2022-04-19
[77] 웹사이트 C++ compiler support - cppreference.com https://en.cpprefere[...] 2020-10-10
[78] 웹사이트 Andrew Sutton - [PATCH] Add -std=c++2a https://gcc.gnu.org/[...] 2022-04-19
[79] 웹사이트 C++ Standards Support in GCC - GNU Project https://gcc.gnu.org/[...] 2022-04-19
[80] 웹사이트 Trip report: Summer ISO C++ standards meeting (Toronto) https://herbsutter.c[...] 2017-07-16
[81] 웹사이트 Concepts Lite: Constraining Templates with Predicates https://isocpp.org/b[...] 2021-01-13
[82] 웹사이트 Trip report: Fall ISO C++ standards meeting (Albuquerque) https://herbsutter.c[...] 2017-12-04
[83] 웹사이트 N4714 Editors' Report -- Programming Languages -- C++ https://github.com/c[...] GitHub 2018-12-27
[84] 웹사이트 Trip Report: C++ Standards Meeting in Jacksonville, March 2018 https://botondballo.[...] 2019-05-18
[85] 웹사이트 Trip report: Summer ISO C++ standards meeting (Rapperswil) https://herbsutter.c[...] 2018-11-10
[86] 웹사이트 Support for contract based programming in C++ https://www.open-std[...] 2018-11-10
[87] 문서 fall meeting in November 2018 http://open-std.org/[...]
[88] 웹사이트 P1289R0 - Access control in contract conditions https://www.open-std[...] 2018-11-11
[89] 문서 winter meeting in February 2019 https://open-std.org[...]
[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) https://www.reddit.c[...] 2019-02-24
[91] 웹사이트 Trip report: Winter ISO C++ standards meeting (Kona) https://herbsutter.c[...] 2019-02-24
[92] 웹사이트 2019 Cologne Meeting Invitation and Information https://www.open-std[...]
[93] 웹사이트 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) https://www.reddit.c[...] 2019-09-15
[94] 웹사이트 Trip Report: C++ Standards Meeting in Cologne, July 2019 https://botondballo.[...] 2019-08-05
[95] 웹사이트 Trip report: Summer ISO C++ standards meeting (Cologne) https://herbsutter.c[...] 2019-07-21
[96] 웹사이트 P1823R0: Remove Contracts from C++20 https://open-std.org[...] 2019-08-20
[97] 웹사이트 P1161R2: Deprecate uses of the comma operator in subscripting expressions https://www.open-std[...] 2019-07-20
[98] 웹사이트 Permitting trivial default initialization in constexpr contexts https://www.open-std[...] 2019-07-20
[99] 웹사이트 P1668R1: Enabling Constexpr Intrinsics By Permitting Unevaluated inline-asm in Constexpr Functions http://open-std.org/[...] 2019-07-20
[100] 웹사이트 P1099R5: Using Enum http://open-std.org/[...] 2019-07-20
[101] 웹사이트 P1186R3: When do you actually use <=>? http://open-std.org/[...] 2019-07-20
[102] 웹사이트 P1630R1: Spaceship needs a tune-up http://open-std.org/[...] 2019-07-20
[103] 웹사이트 P1766R1: Mitigating minor modules maladies http://open-std.org/[...] 2019-07-20
[104] 웹사이트 P1452R2: On the non-uniform semantics of return-type-requirements http://open-std.org/[...] 2019-07-20
[105] 웹사이트 P1152R4: Deprecating volatile http://www.open-std.[...] 2019-07-20
[106] 웹사이트 P1771R1: nodiscard for constructors http://www.open-std.[...] 2019-07-20
[107] 웹사이트 P1754R1: Rename concepts to standard_case for C++20, while we still can http://www.open-std.[...] 2019-07-20
[108] 웹사이트 P0645R10: Text Formatting http://www.open-std.[...] 2019-07-20
[109] 웹사이트 std::format in C++20 http://www.zverovich[...] 2019-07-23
[110] 웹사이트 P1361R2: Integration of chrono with text formatting http://www.open-std.[...] 2019-07-20
[111] 웹사이트 P1652R1: Printf corner cases in std::format http://www.open-std.[...] 2019-07-20
[112] 웹사이트 P0553R4: Bit operations http://www.open-std.[...] 2019-07-20
[113] 웹사이트 P1965R2: constexpr INVOKE http://www.open-std.[...] 2019-07-20
[114] 웹사이트 P0631R8: Math Constants http://www.open-std.[...] 2019-07-20
[115] 웹사이트 P1643R1: Add wait/notify to atomic_ref<T> http://www.open-std.[...] 2019-07-20
[116] 웹사이트 P1664R0: Add wait/notify to atomic http://www.open-std.[...] 2019-07-20
[117] 웹사이트 P1614R2: The Mothership has Landed - Adding <=> to the Library http://www.open-std.[...] 2019-07-20
[118] 웹사이트 P1502R1: Standard library header units for C++20 http://www.open-std.[...] 2019-07-20
[119] 웹사이트 P1135R6: The C++20 Synchronization Library http://www.open-std.[...] 2019-07-20
[120] 웹사이트 P0514R4: Efficient concurrent waiting for C++20 http://www.open-std.[...] 2018-06-05
[121] 웹사이트 P0666R2: Revised Latches and Barriers for C++20 http://www.open-std.[...] 2018-06-05
[122] 웹사이트 P0995R1: Improving atomic_flag http://www.open-std.[...] 2018-06-05
[123] 웹사이트 P1285R0: Don't Make C++ Unimplementable On Small CPUs http://www.open-std.[...] 2018-06-05
[124] 웹사이트 P1208R6: Adopt source_location from Library Fundamentals V3 for C++20 http://open-std.org/[...] 2019-08-20
[125] 웹사이트 P0980R1: Making std::string constexpr http://www.open-std.[...] 2019-07-20
[126] 웹사이트 P1004R2: Making std::vector constexpr http://www.open-std.[...] 2019-07-20
[127] 웹사이트 P0660R10: Stop Token and Joining Thread http://www.open-std.[...] 2019-07-20
[128] 웹사이트 fall meeting in November 2019 https://wg21.link/n4[...]
[129] 웹사이트 r/cpp - 2019-11 Belfast ISO C++ Committee Trip Report — Started Processing Feedback on the C++20 Committee Draft; ABI Review Group Formed https://www.reddit.c[...] 2019-11-09
[130] 웹사이트 Trip report: Autumn ISO C++ standards meeting (Belfast) https://herbsutter.c[...] 2019-11-09
[131] 웹사이트 Trip Report: C++ Standards Meeting in Belfast, November 2019 https://botondballo.[...] 2019-11-15
[132] 웹사이트 P1907R0: Inconsistencies with non-type template parameters http://www.open-std.[...] 2019-10-07
[133] 웹사이트 P1714: NTTP are incomplete without float, double, and long double! (Revision 1) http://www.open-std.[...] 2019-07-19
[134] 웹사이트 P1855R=: Make freestanding http://www.open-std.[...] 2019-10-05
[135] 웹사이트 P1872R0: span should have size_type not index_type http://www.open-std.[...] 2019-09-16
[136] 웹사이트 P1456: Move-only views http://www.open-std.[...] 2019-01-25
[137] 웹사이트 P1391: Range constructor for std::string_view http://www.open-std.[...]
[138] 웹사이트 P1394: Range constructor for std::span http://www.open-std.[...] 2019-08-02
[139] 웹사이트 P1870R1: forwarding-range<T> is too subtle http://www.open-std.[...] 2019-10-06
[140] 웹사이트 P0883: Fixing Atomic Initialization http://www.open-std.[...] 2018-06-05
[141] 웹사이트 Missing feature-test macros 2018-2019 http://www.open-std.[...] 2019-10-06
[142] 웹사이트 ISO/IEC 14882:2020 Programming languages — C++ https://www.iso.org/[...] 2020-12
[143] 웹사이트 cpprefjp - C++日本語リファレンス C++20 https://cpprefjp.git[...]
[144] 웹사이트 P1000R3: C++ IS schedule http://www.open-std.[...] 2019-10-01
[145] 웹사이트 N4817: 2020 Prague Meeting Invitation and Information http://open-std.org/[...] 2019-11-06
[146] 웹사이트 Why does the C++ standard ship every three years? https://herbsutter.c[...]
[147] 웹사이트 P0592R0: To boldly suggest an overall plan for C++20 http://www.open-std.[...]
[148] 웹사이트 P0606R0: Concepts Are Ready http://www.open-std.[...]
[149] 웹사이트 P1141R1 - Yet another approach for constrained declarations http://open-std.org/[...]
[150] 웹사이트 N4720: Working Draft, Extensions to C++ for Modules https://isocpp.org/f[...]
[151] 웹사이트 Designated Initialization Wording https://wg21.link/p0[...]
[152] 웹사이트 Allow lambda capture [=, this] https://wg21.link/p0[...]
[153] 웹사이트 Familiar template syntax for generic lambdas https://wg21.link/p0[...]
[154] 웹사이트 Range-based for statements with initializer http://www.open-std.[...]
[155] 뉴스 Trip Report: C++ Standards Meeting in Albuquerque, November 2017 https://botondballo.[...] There's Waldo! 2017-11-20
[156] 웹사이트 Wording for lambdas in unevaluated contexts http://www.open-std.[...]
[157] 웹사이트 Default constructible and assignable stateless lambdas http://www.open-std.[...]
[158] 웹사이트 Pack expansion in lambda init-capture http://www.open-std.[...]
[159] 웹사이트 String literals as non-type template parameters http://www.open-std.[...]
[160] 웹사이트 Down with typename! http://www.open-std.[...]
[161] 웹사이트 Language support for empty objects http://www.open-std.[...]
[162] 웹사이트 Proposed wording for likely and unlikely attributes (Revision 5) http://www.open-std.[...]
[163] 웹사이트 explicit(bool) http://www.open-std.[...]
[164] 웹사이트 Allowing Virtual Function Calls in Constant Expressions http://www.open-std.[...]
[165] 웹사이트 P1330R0 - Changing the active member of a union inside constexpr https://wg21.link/p1[...]
[166] 웹사이트 P1002R0 - Try-catch blocks in constexpr functions http://www.open-std.[...]
[167] 웹사이트 P1327R0 - Allowing dynamic_cast, polymorphic typeid in Constant Expressions https://wg21.link/p1[...]
[168] 웹사이트 P1006R1 - Constexpr in std::pointer_traits http://www.open-std.[...]
[169] 웹사이트 P1073R2 - Immediate functions http://www.open-std.[...]
[170] 웹사이트 P1236R0: Alternative Wording for P0907R4 Signed Integers are Two's Complement http://www.open-std.[...]
[171] 웹사이트 P0668R4: Revising the C++ memory model http://www.open-std.[...]
[172] 웹사이트 P1091R1: Extending structured bindings to be more like variable declarations http://www.open-std.[...]
[173] 웹사이트 P1091R2: Extending structured bindings to be more like variable declarations http://www.open-std.[...]
[174] 웹사이트 N4649: Working Draft, Technical Specification on C++ Extensions for Coroutines http://www.open-std.[...]
[175] 웹사이트 P1099R5: Using Enum http://open-std.org/[...] 2019-07-20
[176] 웹사이트 P1143R2: Adding the constinit keyword http://open-std.org/[...] 2019-07-20
[177] 웹사이트 P0896R3 http://www.open-std.[...] 2018-11-11
[178] 웹사이트 Extending make_shared to Support Arrays http://www.open-std.[...] 2020-02-16
[179] 웹사이트 Revising atomic_shared_ptr for C++20 http://www.open-std.[...] ISO 2018-12-27
[180] 웹사이트 Utility to convert a pointer to a raw pointer http://www.open-std.[...] 2020-02-12
[181] 웹사이트 Extending to Calendars and Time Zones http://www.open-std.[...] 2019-05-18
[182] 웹사이트 span: bounds-safe views for sequences of objects http://wg21.link/p01[...] 2019-05-18
[183] 웹사이트 "" http://wg21.link/p07[...] 2019-05-18
[184] 웹사이트 Bit-casting object representations http://www.open-std.[...] 2018-11-10
[185] 웹사이트 Integrating feature-test macros into the C++ WD http://www.open-std.[...] 2018-11-10
[186] 웹사이트 P1032R1 - Misc constexpr bits http://www.open-std.[...] 2018-11-11
[187] 웹사이트 Smart pointer creation with default initialization http://www.open-std.[...] 2020-02-12
[188] 웹사이트 std::map::contains - cppreference.com https://en.cpprefere[...] 2020-05-12
[189] 웹사이트 P1161R2: Deprecate uses of the comma operator in subscripting expressions http://www.open-std.[...] 2019-07-20
[190] 웹사이트 P1152R4: Deprecating volatile http://www.open-std.[...] 2019-07-20
[191] 웹사이트 P1143R2: Adding the constinit keyword http://open-std.org/[...] 2019-07-20
[192] 웹사이트 C++ keywords - cppreference.com https://en.cpprefere[...] 2019-08-04
[193] 웹사이트 explicit specifier - cppreference.com https://en.cpprefere[...] 2019-08-04
[194] 웹사이트 P1152R4: Deprecating volatile http://www.open-std.[...] 2019-07-20
[195] 웹사이트 attribute specifier sequence(since C++11) - cppreference.com https://en.cpprefere[...] 2019-08-04
[196] 웹사이트 Trip report: Summer ISO C++ standards meeting (Toronto) https://herbsutter.c[...] 2017-07-16
[197] 웹사이트 Trip report: Fall ISO C++ standards meeting (Albuquerque) https://herbsutter.c[...] 2017-12-04
[198] 웹사이트 "N4714 Editors' Report -- Programming Languages -- C++" https://github.com/c[...] GitHub 2018-12-27
[199] 웹사이트 Trip Report: C++ Standards Meeting in Jacksonville, March 2018 https://botondballo.[...] 2019-05-18
[200] 웹사이트 Down with typename! http://www.open-std.[...] 2019-05-18
[201] 웹사이트 Language support for empty objects http://www.open-std.[...] 2019-08-04
[202] 웹사이트 Proposed wording for likely and unlikely attributes (Revision 5) http://www.open-std.[...] 2019-05-18
[203] 웹사이트 Extending to Calendars and Time Zones http://www.open-std.[...] 2019-05-18
[204] 웹사이트 span: bounds-safe views for sequences of objects http://wg21.link/p01[...] 2019-05-18
[205] 웹사이트 "" http://wg21.link/p07[...] 2019-05-18
[206] 웹사이트 Trip report: Summer ISO C++ standards meeting (Rapperswil) https://herbsutter.c[...] 2018-11-10
[207] 웹사이트 Support for contract based programming in C++ http://www.open-std.[...] 2018-11-10
[208] 웹사이트 Integrating feature-test macros into the C++ WD http://www.open-std.[...] 2018-11-10
[209] 웹사이트 Bit-casting object representations http://www.open-std.[...] 2018-11-10
[210] 웹사이트 explicit(bool) http://www.open-std.[...] 2018-11-13
[211] 웹사이트 Allowing Virtual Function Calls in Constant Expressions http://www.open-std.[...] 2019-03-11
[212] 웹사이트 P1032R1 - Misc constexpr bits http://www.open-std.[...] 2018-11-11
[213] 웹사이트 P1073R2 - Immediate functions http://www.open-std.[...] 2018-11-11
[214] 웹사이트 P1236R0: Alternative Wording for P0907R4 Signed Integers are Two's Complement http://www.open-std.[...] 2018-11-11
[215] 웹사이트 P1289R0 - Access control in contract conditions http://www.open-std.[...] 2018-11-11
[216] 웹사이트 P0668R4: Revising the C++ memory model http://www.open-std.[...] 2018-11-11
[217] 웹사이트 Smart pointer creation with default initialization http://www.open-std.[...] 2020-02-12
[218] 웹사이트 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) https://www.reddit.c[...] 2019-02-24
[219] 웹사이트 Trip report: Winter ISO C++ standards meeting (Kona) https://herbsutter.c[...] 2019-02-24
[220] 웹사이트 N4649: Working Draft, Technical Specification on C++ Extensions for Coroutines http://www.open-std.[...] 2017-05-06
[221] 웹사이트 Clang 5 Release Notes on coroutines http://releases.llvm[...] 2018-08-31
[222] 웹사이트 N4720: Working Draft, Extensions to C++ for Modules https://isocpp.org/f[...] 2019-04-30
[223] 웹사이트 Clang 5 documentation on Modules https://clang.llvm.o[...] 2017-05-06
[224] 웹사이트 C++ Modules in VS 2015 Update 1 https://blogs.msdn.m[...] 2018-08-10
[225] 웹사이트 cxx-modules - GCC Wiki https://gcc.gnu.org/[...] 2019-02-24
[226] 웹사이트 cxx-modules - GCC Wiki https://gcc.gnu.org/[...] 2019-02-24
[227] 웹사이트 P1091R1: Extending structured bindings to be more like variable declarations http://www.open-std.[...] 2019-02-24
[228] 웹사이트 P1091R2: Extending structured bindings to be more like variable declarations http://www.open-std.[...] 2019-02-24
[229] 웹사이트 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) https://www.reddit.c[...] 2019-09-15
[230] 웹사이트 Trip Report: C++ Standards Meeting in Cologne, July 2019 https://botondballo.[...] 2019-08-05
[231] 웹사이트 Trip report: Summer ISO C++ standards meeting (Cologne) https://herbsutter.c[...] 2019-07-21
[232] 웹사이트 P1823R0: Remove Contracts from C++20 http://open-std.org/[...] 2019-08-20
[233] 웹사이트 P1161R2: Deprecate uses of the comma operator in subscripting expressions http://www.open-std.[...] 2019-07-20
[234] 웹사이트 Permitting trivial default initialization in constexpr contexts http://www.open-std.[...] 2019-07-20
[235] 웹사이트 P1668R1: Enabling Constexpr Intrinsics By Permitting Unevaluated inline-asm in Constexpr Functions http://open-std.org/[...] 2019-07-20
[236] 웹사이트 P1099R5: Using Enum http://open-std.org/[...] 2019-07-20
[237] 웹사이트 P1186R3: When do you actually use <=>? http://open-std.org/[...] 2019-07-20
[238] 웹사이트 P1630R1: Spaceship needs a tune-up http://open-std.org/[...] 2019-07-20
[239] 웹사이트 P1766R1: Mitigating minor modules maladies http://open-std.org/[...] 2019-07-20
[240] 웹사이트 P1452R2: On the non-uniform semantics of return-type-requirements http://open-std.org/[...] 2019-07-20
[241] 웹사이트 P1152R4: Deprecating volatile http://www.open-std.[...] 2019-07-20
[242] 웹사이트 P1771R1: nodiscard for constructors http://www.open-std.[...] 2019-07-20
[243] 웹사이트 P1754R1: Rename concepts to standard_case for C++20, while we still can http://www.open-std.[...] 2019-07-20
[244] 웹사이트 P0645R10: Text Formatting http://www.open-std.[...] 2019-07-20
[245] 웹사이트 std::format in C++20 http://www.zverovich[...] 2019-09-15
[246] 웹사이트 P1361R2: Integration of chrono with text formatting http://www.open-std.[...] 2019-07-20
[247] 웹사이트 P1652R1: Printf corner cases in std::format http://www.open-std.[...] 2019-07-20
[248] 웹사이트 P0553R4: Bit operations http://www.open-std.[...] 2019-07-20
[249] 웹사이트 P1965R2: constexpr INVOKE http://www.open-std.[...] 2019-07-20
[250] 웹사이트 P0631R8: Math Constants http://www.open-std.[...] 2019-07-20
[251] 웹사이트 P1643R1: Add wait/notify to atomic_ref http://www.open-std.[...] 2019-07-20
[252] 웹사이트 P1664R0: Add wait/notify to atomic> http://www.open-std.[...] 2019-07-20
[253] 웹사이트 P1614R2: The Mothership has Landed - Adding <=> to the Library http://www.open-std.[...] 2019-07-20
[254] 웹사이트 P1502R1: Standard library header units for C++20 http://www.open-std.[...] 2019-07-20
[255] 웹사이트 P1135R6: The C++20 Synchronization Library http://www.open-std.[...] 2019-07-20
[256] 웹사이트 P0514R4: Efficient concurrent waiting for C++20 http://www.open-std.[...] 2018-06-05
[257] 웹사이트 P0666R2: Revised Latches and Barriers for C++20 http://www.open-std.[...] 2018-06-05
[258] 웹사이트 P0995R1: Improving atomic_flag http://www.open-std.[...] 2018-06-05
[259] 웹사이트 P1285R0: Don't Make C++ Unimplementable On Small CPUs http://www.open-std.[...] 2018-06-05
[260] 웹사이트 P1208R6: Adopt source_location from Library Fundamentals V3 for C++20 http://open-std.org/[...] 2019-08-20
[261] 웹사이트 P0980R1: Making std::string constexpr http://www.open-std.[...] 2018-06-05
[262] 웹사이트 P1004R2: Making std::vector constexpr http://www.open-std.[...] 2018-06-05
[263] 웹사이트 P0660R10: Stop Token and Joining Thread http://www.open-std.[...] 2019-07-20
[264] 웹사이트 r/cpp - 2019-11 Belfast ISO C++ Committee Trip Report — Started Processing Feedback on the C++20 Committee Draft; ABI Review Group Formed https://www.reddit.c[...] 2019-11-09
[265] 웹사이트 Trip report: Autumn ISO C++ standards meeting (Belfast) https://herbsutter.c[...] 2019-11-09
[266] 웹사이트 Trip Report: C++ Standards Meeting in Belfast, November 2019 https://botondballo.[...] 2019-11-15
[267] 웹사이트 P1907R0: Inconsistencies with non-type template parameters http://www.open-std.[...] 2019-10-07
[268] 웹사이트 P1714: NTTP are incomplete without float, double, and long double! (Revision 1) http://www.open-std.[...] 2019-07-19
[269] 웹사이트 P1855R=: Make freestanding http://www.open-std.[...] 2019-10-05
[270] 웹사이트 P1872R0: span should have size_type not index_type http://www.open-std.[...] 2019-09-16
[271] 웹사이트 P1456: Move-only views http://www.open-std.[...] 2019-01-25
[272] 웹사이트 P1391: Range constructor for std::string_view P1391R4
[273] 웹사이트 P1394: Range constructor for std::span http://www.open-std.[...] 2019-08-02
[274] 웹사이트 P1870R1: forwarding-range is too subtle http://www.open-std.[...]
[275] 웹사이트 P0883: Fixing Atomic Initialization http://www.open-std.[...] 2018-06-05
[276] 웹사이트 Missing feature-test macros 2018-2019 http://www.open-std.[...] 2019-10-06
[277] 웹사이트 C++ Extensions for Parallelism Version 2 https://wg21.link/N4[...] 2019-07-09
[278] 웹사이트 Task Blocks http://www.modernesc[...] 2017-07-23
[279] 웹사이트 C++ Extensions for Networking https://wg21.link/N4[...] 2019-07-09
[280] 웹사이트 C++ Extensions for Reflection https://wg21.link/N4[...] 2019-07-09
[281] 웹사이트 Trip report: Summer ISO C++ standards meeting (Cologne) https://herbsutter.c[...] 2019-07-21
[282] 웹사이트 Reflections on the reflection proposals - Meeting C++ https://meetingcpp.c[...] 2017-06-30
[283] 웹사이트 Static reflection http://www.open-std.[...] 2018-11-10
[284] 웹사이트 Metaclasses http://www.open-std.[...] 2017-07-23
[285] 웹사이트 A Unified Executors Proposal for C++ http://www.open-std.[...] 2019-02-24
[286] 웹사이트 N4771: Working Draft, C++ Extensions for Networking http://www.open-std.[...] 2019-03-23
[287] 웹사이트 ISO/IEC TS 19216:2018 Programming Languages -- C++ Extensions for Networking https://www.iso.org/[...] 2018-12-17
[288] 웹사이트 A General Property Customization Mechanism http://www.open-std.[...] 2019-02-24
[289] 웹사이트 A Unified Futures Proposal for C++ https://wg21.link/P1[...] 2019-07-08
[290] 웹인용 The next standard after C++17 will be C++20 https://herbsutter.c[...]
[291] 웹인용 Current Status : Standard C++ https://isocpp.org/s[...]
[292] 웹인용 Working Draft, Standard for Programming Language C++ http://www.open-std.[...]
[293] 웹인용 P0592R0: To boldly suggest an overall plan for C++20 http://www.open-std.[...]
[294] 웹인용 Trip report: Summer ISO C++ standards meeting (Toronto) https://herbsutter.c[...]
[295] 웹인용 P0606R0: Concepts Are Ready http://www.open-std.[...]
[296] 웹인용 Designated Initialization Wording https://wg21.link/p0[...]
[297] 웹인용 Allow lambda capture [=, this] https://wg21.link/p0[...]
[298] 웹인용 Familiar template syntax for generic lambdas https://wg21.link/p0[...]
[299] 웹인용 Trip report: Fall ISO C++ standards meeting (Albuquerque) https://herbsutter.c[...]
[300] 뉴스 Trip Report: C++ Standards Meeting in Albuquerque, November 2017 https://botondballo.[...] 2017-12-11
[301] 웹인용 Wording for lambdas in unevaluated contexts http://www.open-std.[...]
[302] 웹인용 Default constructible and assignable stateless lambdas http://www.open-std.[...]
[303] 웹인용 Pack expansion in lambda init-capture http://www.open-std.[...] 2017-12-11
[304] 웹인용 String literals as non-type template parameters http://www.open-std.[...]
[305] 웹인용 N4649: Working Draft, Technical Specification on C++ Extensions for Coroutines http://www.open-std.[...]
[306] 웹인용 Clang 5 Release Notes on coroutines http://releases.llvm[...]
[307] 웹인용 N4637: Working Draft, Extensions to C++ for Modules http://www.open-std.[...]
[308] 웹인용 Clang 5 documentation on Modules https://clang.llvm.o[...]
[309] 웹인용 C++ Modules in VS 2015 Update 1 https://blogs.msdn.m[...]
[310] 웹인용 N3341: Transactional Language Constructs for C++ http://www.open-std.[...]
[311] 웹인용 Reflections on the reflection proposals - Meeting C++ https://meetingcpp.c[...] 2017-06-30
[312] 웹인용 Metaclasses http://www.open-std.[...]
[313] 웹인용 Atomic Smart Pointers http://www.modernesc[...]
[314] 웹인용 Functional in C++17 and C++20 http://www.modernesc[...]
[315] 웹인용 P0342R0: Timing barriers http://www.open-std.[...]
[316] 웹인용 N4734: Working Draft, C++ Extensions for Networking http://www.open-std.[...]
[317] 웹인용 N4651: Working Draft, C++ Extensions for Ranges http://www.open-std.[...]
[318] 웹인용 Task Blocks http://www.modernesc[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com