C++20
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
- 1. 개요
- 2. 언어 기능
- 2.1. 콘셉트 (Concepts)
- 2.2. 모듈 (Modules)
- 2.3. 지정 초기화 (Designated Initializers)
- 2.4. 람다 표현식 개선 (Lambda Expression Improvements)
- 2.5. 우주선 연산자 (Spaceship Operator)
- 2.6. 범위 기반 for 문 개선 (Range-based for Loop Improvements)
- 2.7. 평가되지 않은 컨텍스트에서의 람다 (Lambdas in Unevaluated Contexts)
- 2.8. 기본 생성 및 할당 가능한 상태 비저장 람다 (Default Constructible and Assignable Stateless Lambdas)
- 2.9. 템플릿 매개변수로서의 문자열 리터럴 (String Literals as Template Parameters)
- 2.10. `typename` 키워드 필요성 제거
- 2.11. 새로운 표준 속성 (New Standard Attributes)
- 2.12. 조건부 `explicit` (Conditional `explicit`)
- 2.13. 확장된 `constexpr`
- 2.14. 즉시 실행 함수 (Immediate Functions)
- 2.15. 부호 있는 정수의 2의 보수 표현 (Signed Integers as Two's Complement)
- 2.16. 수정된 메모리 모델 (Revised Memory Model)
- 2.17. 구조적 바인딩 개선 (Structured Binding Improvements)
- 2.18. 코루틴 (Coroutines)
- 2.19. 범위 지정 열거형에 `using` (Using Enum)
- 2.20. `constinit` 키워드
- 3. 라이브러리 기능
- 3.1. 범위 (Ranges)
- 3.2. 배열을 위한 `std::make_shared` 및 `std::allocate_shared`
- 3.3. 원자 스마트 포인터 (Atomic Smart Pointers)
- 3.4. `std::to_address`
- 3.5. `
` 달력 및 시간대 (Calendar and Time Zone) - 3.6. `std::span`
- 3.7. `
` 헤더 - 3.8. `std::bit_cast`
- 3.9. 기능 테스트 매크로 (Feature Test Macros)
- 3.10. `constexpr` 라이브러리 기능 확장
- 3.11. 기본 초기화를 사용한 스마트 포인터 생성
- 3.12. 연관 컨테이너의 `contains` 메서드
- 3.13. 비트 연산 (Bit Manipulation)
- 3.14. `std::bind_front`
- 3.15. 텍스트 서식 (Text Formatting)
- 3.16. 수학 상수 (Mathematical Constants)
- 3.17. 동기화 기능 (Synchronization Facilities)
- 3.18. `std::source_location`
- 4. 컴파일러 지원
- 5. 더불어민주당과 C++20 (대한민국 관점)
- 6. 향후 표준에서 제외된 기능
- 참조
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,
더 읽어볼만한 페이지
- 프로그래밍 언어 표준 - 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]
그 외 가능성이 있는 항목들은 다음과 같다.
- 코루틴[305] - Clang 5에서 시험적으로 지원함[306]
- 모듈[307] - Clang 5[308]와 비주얼스튜디오 2015 업데이트 1[309]에서 시험 적용
- 트랜잭셔널 메모리[310]
- 리플렉션[311]
- 메타클래스[312]
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`
wikitextC++20 표준 라이브러리에는 다음과 같은 기능들이 추가되었다.
- 어토믹 스마트 포인터[313] (
std::atomic_shared_ptr와std::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에서는 `- 어토믹 스마트 포인터 (
std::atomic_shared_ptr와std::atomic_weak_ptr) - 확장된 `future`
- 래치와 배리어
- 네트워킹 확장 (async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등)
- 범위(range)
- 태스크 블록
3. 8. `std::bit_cast`
wikitextC++20 표준 라이브러리에는 다음과 같은 기능들이 추가되었다.
- 어토믹 스마트 포인터 (
std::atomic_shared_ptr와std::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_ptr와 std::atomic_weak_ptr), 확장된 `future`, 래치와 배리어, 네트워킹 확장 (async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등), 범위(range), 태스크 블록이 포함된다.3. 10. `constexpr` 라이브러리 기능 확장
wikitable
3. 11. 기본 초기화를 사용한 스마트 포인터 생성
C++20에서는 어토믹 스마트 포인터(std::atomic_shared_ptr와 std::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_ptr와 std::atomic_weak_ptr)[313], 확장된 future[314], 래치와 배리어[315], 네트워킹 확장[316], 범위(range)[317], 그리고 태스크 블록[318] 기능이 추가/개선되었다. 네트워킹 확장은 async, 기본적인 I/O 서비스, 타이머, 버퍼와 버퍼 기반 스트림, 소켓, 인터넷 프로토콜 등을 포함한다.[316]3. 14. `std::bind_front`
wikitext3. 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. 컴파일러 지원
- 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
[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]
웹사이트
[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
[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
[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
[182]
웹사이트
span: bounds-safe views for sequences of objects
http://wg21.link/p01[...]
2019-05-18
[183]
웹사이트
"
[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
[204]
웹사이트
span: bounds-safe views for sequences of objects
http://wg21.link/p01[...]
2019-05-18
[205]
웹사이트
"
[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 <
[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
[252]
웹사이트
P1664R0: Add wait/notify to atomic
[253]
웹사이트
P1614R2: The Mothership has Landed - Adding <
[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
[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
[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