Namespaces
Variants

Compiler support for C++20

From cppreference.net

* - 별표로 표시된 셀 위에 마우스를 올리면 * 추가 팝업 노트를 볼 수 있습니다.
DR nn - "DR" 뒤의 숫자 nn 은 결함 보고서가 적용되는 대상 C++ 개정판을 나타냅니다(예: DR20 → C++20).

C++20 핵심 언어 기능

C++20 기능

문서

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
람다 캡처 허용 Lambda capture [ = , this ] P0409R2 8 6 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
__VA_OPT__ P0306R4
P1042R1
8 (부분적)*
10 (부분적)*
12
9 19.25* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
지정자 초기화 ( FTM ) * P0329R4 4.7 (부분적)*
8
3.0 (부분적)*
10
19.21* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
제네릭 람다를 위한 템플릿 매개변수 목록 ( FTM ) * P0428R2 8 9 19.22* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
비트 필드에 대한 기본 멤버 초기화 P0683R1 8 6 19.25* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
클래스 템플릿 인수 추론에서의 초기화자 리스트 생성자 P0702R1 8 6 19.14* Yes 5.0 2021.1 20.7 12.0 11.0
const & const 한정 멤버 포인터 P0704R1 8 6 19.0 (2015)* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
Concepts ( FTM ) * P0734R0 5*
10
10 19.23* (부분적)*
19.30*
12.0.0* (부분적) 6.1 2023.1* 20.11 12.0 11.0
평가되지 않은 컨텍스트에서의 람다 P0315R4 9 13 (부분적)*
14 (부분적)*
17
19.28 (16.8)* 13.1.6* (부분적) 6.2 2023.1 (부분적)
2024.0
20.7 12.0
3-way 비교 연산자 ( FTM ) * P0515R3 10 8 (부분적)
10
19.20* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11: 암시적 람다 캡처 단순화 P0588R1 8 19.24* 5.1 2021.1 20.7 12.0
범위 기반 for를 위한 초기화 구문 P0614R1 9 8 19.25* 11.0.0* 6.0 2021.7 20.11 12.0 11.0
기본 생성 가능하고 할당 가능한 상태 없는 람다 P0624R2 9 8 19.22* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
기본화된 특수 멤버 함수의 타입 불일치 P0641R2 9 (부분적)* 8 19.0 (2015)* (부분적)* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
특수화에 대한 접근 검사 P0692R1 Yes 8 (부분적)
14
19.26* 14.0.0* 5.1 2021.1 20.7 12.0
ADL과 보이지 않는 함수 템플릿 P0846R0 9 9 19.21* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
DR11: constexpr 함수 정의가 상수 평가에 필요한 경우 를 명시함 ( FTM ) * P0859R0 5.2 (부분적)*
9
8 19.27* (부분적)*
19.31* *
11.0.0* (부분적) 12.0 11.0
속성 [[ likely ]] [[ unlikely ]] P0479R5 9 12 19.26* 13.0.0* 5.1 2021.7 20.7 12.0
typename 사용을 더 선택적으로 만들기 P0634R3 9 16 19.29 (16.10)* 16.0.0* 5.1 2023.1 20.7 12.0
Pack-expansions in lambda init-captures ( FTM ) * P0780R2 9 9 19.22* 11.0.3* 6.1 2021.7 20.11 12.0 11.0
속성 [[ no_unique_address ]] P0840R2 9 9 19.28 (16.9)* * 11.0.3* 5.1 2021.1 20.7 12.0 11.0
조건부로 단순화된 특수 멤버 함수  ( FTM ) * P0848R3 10 16 19.28 (16.8)* 6.1 2021.7 20.11 12.0
DR17: structured bindings 커스터마이제이션 포인트 탐색 규칙 완화 P0961R1 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
DR11: range-for 루프 커스터마이제이션 포인트 탐색 규칙 완화 P0962R1 8 8 19.25* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
DR17: 접근 가능한 멤버에 대한 구조화된 바인딩 허용 P0969R0 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Destroying operator delete ( FTM ) * P0722R3 9 6 19.27* 10.0.0* 6.1 2023.1 20.11 12.0 11.0
클래스 타입을 상수 템플릿 매개변수 P0732R2 9 12 (부분적) 19.26* (부분적)*
19.28 (16.9)*
13.0.0* (부분적) 6.2 2023.1 (부분적) 21.3 12.0
[=] 를 통한 this 의 암시적 캡처 사용 중단 P0806R2 9 7 19.22* 10.0.1* 5.1 20.7 12.0 11.0
explicit(bool) ( FTM ) * P0892R2 9 9 19.24* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
기능 테스트 매크로 통합 P0941R2 5 3.4 19.15* (부분적)
19.20*
5.0 2021.1 20.7 12.0 11.0
사용자 선언 생성자가 있는 집합체(aggregate) 금지 P1008R1 9 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
constexpr 가상 함수 ( FTM ) * P1064R0 9 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
비교 연산 일관성 개선 P1120R0 10 8 (부분적)
10
19.22* 12.0.0* 5.1 2023.1 20.7 12.0 11.0
char8_t ( FTM ) * P0482R6 9 7* 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
std::is_constant_evaluated() ( FTM ) * P0595R2 9 9 19.25* 11.0.3* 5.1 19.1 21.1 12.0 11.0
constexpr try - catch 블록 P1002R1 9 8 19.25* 10.0.1* 5.1 2023.1 20.7 12.0 11.0
즉시 함수 ( consteval )  ( FTM ) * P1073R3 10 (부분)*
11
11 (부분)
14 (부분)*
17
19.28 (16.8)*
(부분)*

19.29 (16.10)*
11.0.3* (부분)
15.0.0*
5.1 2021.1 20.7 12.0
중첩 인라인 네임스페이스 P1094R2 9 8 19.27* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
제약된 선언 을 위한 또 다른 접근법 P1141R2 10 10 19.26* (부분적)
19.28 (16.9)*
12.0.5* 6.1 2023.1 20.11 12.0 11.0
부호 있는 정수는 2의 보수 표현을 사용합니다 P1236R1 9 9 Yes 11.0.3* N/A 2023.1* yes* 12.0 11.0
dynamic_cast 및 다형적 typeid 상수 표현식 내 사용 P1327R1 10 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
constexpr 내에서 유니온의 활성 멤버 변경 constexpr ( FTM ) * P1330R0 9 9 19.10* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
코루틴 ( FTM ) * ( FTM ) * P0912R5
LWG3393
10 8 (부분적)
17 (부분적)*
19.0 (2015)* (부분적)
19.10* *
19.28 (16.8)*
10.0.1* (부분적) 5.1 2021.1 23.3* 12.0 (호스트 코드만)
집계체의 괄호 초기화 ( FTM ) * P0960R3 10 16 19.28 (16.8)* 16.0.0* 5.1 2021.1 20.7 12.0
DR11: new 표현식에서의 배열 크기 추론 new -expressions P1009R2 11 9 19.27* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
모듈 ( FTM ) * P1103R3 11 (부분적) 8 (부분적) 19.0 (2015)* (부분적)
19.10* *
19.28 (16.8)*
10.0.1* (부분적) 2023.1 (부분적)
강화된 유니코드 요구사항 P1041R4
P1139R2
10 Yes 19.0 (2015)* *
19.26* *
Yes N/A 2023.1* Yes 12.0 11.0
<=> != == P1185R2 10 10 19.22* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11: 다른 예외 명세를 가진 명시적으로 기본 설정된 함수 P1286R2 10 9 19.28 (16.8)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
람다 캡처 및 구조화된 바인딩의 저장 클래스 지정자 P1091R3
P1381R1
10 8 (부분적)
16
19.11* *
19.24* *
16.0.0* 5.1 2021.1 20.7 12.0
알 수 없는 경계의 배열로의 변환 허용 P0388R4 10 14 19.27* 14.0.0* 6.0 2021.5 20.11 12.0
constexpr 컨테이너 연산  ( FTM ) * P0784R7 10 10 19.28 (16.9)* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
volatile 의 일부 사용법 폐지 예정 P1152R4 10 10 19.27* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
constinit ( FTM ) * P1143R2 10 10 19.29 (16.10)* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
첨자에서 쉼표 연산자 사용 중단 P1161R3 10 9 19.25* 11.0.3* 6.0 2021.7 20.11 12.0 11.0
[[ nodiscard ]] 메시지와 함께 P1301R4 10 9 19.25* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
constexpr 함수에서의 단순 기본 초기화 P1331R2 10 10 19.27* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
평가되지 않은 asm 선언문을 constexpr 함수에서 사용 P1668R1 10 10 19.28 (16.9)* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
using enum ( FTM ) * P1099R5 11 13 19.24* 13.1.6* 6.3 2023.1 22.5 12.0
지정된 비교 범주에 대한 삼중 비교 합성 P1186R3 11 10 19.24* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
DR17: [[ nodiscard ]] 생성자용 P1771R1 10 9 19.24* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
별칭 템플릿에 대한 클래스 템플릿 인수 추론 ( FTM ) * P1814R0 10 19 19.27* 6.5 23.9 12.0
집계체에 대한 클래스 템플릿 인수 추론 ( FTM ) * P1816R0
P2082R1
10*
11*
17 19.27* 6.3 2023.1 (부분적)*
2024.1
23.3 12.0
DR11: 더 많은 지역 객체와 우측값 참조에 대한 암시적 이동 P1825R0 11* 13 19.24* 13.1.6* 6.0 2021.5 20.11 12.0
값으로 비교 기본 설정 허용 P1946R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
std::weak_equality std::strong_equality 제거 P1959R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
상수 템플릿 매개변수와의 불일치  ( FTM ) * P1907R1 10 (부분적)
11
18 (부분적)* 19.26* 13.1.6* (부분적) 6.2 2023.1 (부분적) 21.3 12.0
DR98: 유사 소멸자는 객체 수명을 종료시킴 P0593R6 11 11 Yes 12.0.5* N/A 2023.1* Yes 12.0 11.0
DR11: T * 에서 bool 로의 변환은 축소 변환으로 간주되어야 함 P1957R2 10*
11*
11 19.27* 12.0.5* 6.1 12.0 11.0


C++20 기능


문서(들)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

C++20 라이브러리 기능

번역된 내용: - "Feature-testing macro:" → "기능 테스트 매크로:" - HTML 태그, 속성, ` ` 태그 내의 `std::remove_cvref`, FTM, P0550R2 등 C++ 관련 용어는 원본 유지 - 모든 HTML 구조와 서식은 그대로 보존 번역된 내용: - "Feature-testing macro:" → "기능 테스트 매크로:" - C++ 관련 용어(std::span, FTM, P0122R7, __cpp_lib_span 등)는 원문 유지 - HTML 태그, 속성, 코드 블록은 변경 없이 보존 - VS, Xcode 등의 버전 정보는 숫자 형식 그대로 유지 **변역 설명:** - `Feature-testing macro:` → `기능 테스트 매크로:`로 번역 - C++ 관련 용어(`std::type_identity`, `FTM`, `P0887R1`, 버전 번호 등)는 원문 유지 - HTML 태그, 속성, 코드 형식은 완전히 보존 - 전문적인 기술 문서 번역 스타일 적용 변경된 부분: - `and` → `및` - `Feature-testing macro:` → `기능 테스트 매크로:` - HTML 태그, 속성, ` ` 태그 내부의 C++ 용어들은 그대로 유지됨 **변역 결과:** **변경된 부분:** - `title="Feature-testing macro:` → `title="기능 테스트 매크로:` **참고:** - HTML 태그, 속성, ` `, `
`, `` 태그 내부의 내용은 번역하지 않음
- C++ 관련 용어(`std::bind_front()`, `FTM`, `P0356R5` 등)는 원문 유지
- 숫자 값과 버전 정보는 그대로 보존
번역된 내용: - "Feature-testing macro" → "기능 테스트 매크로" - HTML 태그, 속성, ` `, `
`, `` 태그 내부의 내용은 번역하지 않고 원본 유지
- C++ 관련 용어(std::to_array(), FTM, P0325R4 등)는 번역하지 않음
- 숫자 값과 버전 정보는 원본 그대로 유지
번역된 내용: - "Bit operations" → "비트 연산" - C++ 함수명(`rotl()`, `rotr()`, `countl_zero()`, `countl_one()`, `countr_zero()`, `countr_one()`, `popcount()`)은 C++ 용어로 번역하지 않고 원본 유지 - HTML 태그, 속성, ` `, `
`, `` 태그 내부 내용은 번역하지 않음
- 모든 HTML 구조와 서식은 원본 그대로 보존
C++20 기능

문서

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
std::endian ( FTM ) * P0463R1 8 7 19.22* 10.0.0*
std::make_shared() 를 배열 지원으로 확장  ( FTM ) * P0674R1 12 15 19.27* 14.0.3*
부동 소수점 원자 연산 ( FTM ) * P0020R6 10 18 19.22* 16.0.0*
동기화된 버퍼 ( std::basic_osyncstream )  ( FTM ) * P0053R7 11 18 19.29 (16.10)*
constexpr <algorithm> <utility> 상수 표현식 지원 ( FTM ) * P0202R3 10 8 (부분적)
12
19.26* 10.0.1* (부분적)
13.0.0*
<complex> 에 대한 추가 constexpr ( FTM ) * P0415R1 9 7 (부분적)
16
19.27* 10.0.0* (부분적)
15.0.0*
std::memory_order 를 범위 있는 열거형으로 만들기 P0439R0 9 9 19.25* 11.0.3*
문자열 접두사 접미사 확인: string (_view) ::starts_with / ends_with ( FTM ) * P0457R2 9 6 19.21* 10.0.0*
operator<=> <compare> 헤더에 대한 라이브러리 지원 ( FTM ) * P0768R1 10 7 (부분적)
12 (부분적)*
17
19.20* (부분적)
19.28 (16.9)*
13.0.0*
std::remove_cvref ( FTM ) * P0550R2 9 6 19.20* 10.0.0*
[[ nodiscard ]] 표준 라이브러리에서 P0600R1 9 7 (부분적)
16
19.13* (부분적)
19.22*
10.0.0* (부분적)
15.0.0*
수치 알고리즘 에서 std::move 사용 P0616R0 9 12 19.23* 13.0.0*
유틸리티 포인터를 원시 포인터로 변환하는  ( FTM ) * P0653R2 8 6 19.22*
아토믹 std::shared_ptr std::weak_ptr ( FTM ) * P0718R2 12 19.27*
std::span ( FTM ) * P0122R7 10 7 19.26* 10.0.0*
Calendar Time zone ( FTM ) * P0355R7 11 (부분)*
13 (부분)*
14
7 (부분)
19 ( 부분 )*
19.29 (16.10)* 10.0.0* (부분)
<version> P0754R2 9 7 19.22* 10.0.0*
비순차 컨테이너 비교 P0809R0 Yes Yes 16.0* Yes
ConstexprIterator 요구사항  ( FTM ) * ( FTM ) * P0858R0 9 12 19.11* 13.0.0*
std::basic_string::reserve() 는 축소해서는 안 됨 P0966R1 11 8 19.25* 10.0.1*
원자적 비교-교환 패딩 비트 포함 P0528R3 13 19.28 (16.8)*
std::atomic_ref ( FTM ) * P0019R8 10 19 19.28 (16.8)*
contains ( ) 연관 컨테이너의 멤버 함수, 예: std::map::contains() P0458R2 9 13 19.21* 13.1.6*
DR11: 조각별 생성 을 위한 보장된 복사 생략 P0475R1 9 Yes 19.29 (16.10)* Yes
std::bit_cast() ( FTM ) * P0476R2 11 14 19.27* 14.0.3*
정수 2의 거듭제곱 연산 :

std::bit_ceil() , std::bit_floor() , std::bit_width() , std::has_single_bit() ( FTM ) *

P0556R3
P1956R1
9*
10*
9*
12*
19.25* *
19.27* *
19.28 (16.8)*
11.0.3* *
13.0.0* *
erase 유사 알고리즘의 반환 값 개선  ( FTM ) * P0646R1 9 10 19.21* 12.0.0*
std::destroying_delete_t ( FTM ) * P0722R3 9 9 19.27* 11.0.3*
std::is_convertible ( FTM ) * P0758R1 9 9 19.23* 11.0.3*
std::shift_left/right <algorithm> 에 추가 ( FTM ) * P0769R2 10 12 19.21* 13.0.0*
std::swap() swap 관련 함수에 대한 Constexpr 지정 P0879R0 10 13 19.26* 13.1.6*
std::type_identity ( FTM ) * P0887R1 9 8 19.21* 10.0.1*
개념 라이브러리 ( FTM ) * P0898R3 10 13 19.23* 13.1.6*
constexpr 비교 연산자 for std::array P1023R0 10 8 19.27* 10.0.1*
std::unwrap_ref_decay std::unwrap_reference ( FTM ) * P0318R1 9 8 19.21* 10.0.1*
std::bind_front() ( FTM ) * P0356R5 9 13 19.25* 13.1.6*
std::bind_front() ( FTM ) * P0356R5 9 13 19.25* 13.1.6*
std::reference_wrapper 불완전 타입을 위한 P0357R3 9 8 19.26* 10.0.1*
operator>>(basic_istream&, CharT*) 수정 P0487R1 11 8 19.23* 10.0.1*
char8_t 에 대한 라이브러리 지원 ( FTM ) * P0482R6 9 8 (부분적)
16
19.22* 10.0.1* (부분적)
15.0.0*
유틸리티 함수들 를 구현하여 uses-allocator construction 을 수행 P0591R4 9 16 19.29 (16.10)* 15.0.0*
DR17: std::variant std::optional 은 복사/이동 triviality를 전파해야 함 P0602R4 8.3 8 19.11* 10.0.1*
DR17: 합리적인 std::variant 변환 생성자 P0608R3 10 9 19.29 (16.10)* *
19.42* *
11.0.3*
std::function 의 이동 생성자는 noexcept 이어야 합니다 P0771R1 7.2 6 19.22*
The One Ranges Proposal ( FTM ) * P0896R4 10 13 (부분적)
15*
19.29 (16.10)* 14.0.3*
비균질 조회(heterogeneous lookup) for unordered associative containers ( FTM ) * P0919R3
P1690R1
11 12 19.23* (P0919R3)
19.25* (P1690R1)
13.0.0*
<chrono> zero() , min() , 및 max() noexcept 여야 함 P0972R0 9 8 19.14* 10.0.1*
constexpr in std::pointer_traits ( FTM ) * P1006R1 9 8 19.26* 10.0.1*
std::assume_aligned() ( FTM ) * P1007R3 9*
11
15 19.28 (16.9)* 14.0.3*
기본 초기화를 통한 스마트 포인터 생성 (예: make_unique_for_overwrite )  ( FTM ) * P1020R1
P1973R1
11*
12*
16 19.28 (16.9)* 15.0.0*
기타 constexpr 비트 ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1032R1 10 13 19.28 (16.8)* 13.1.6*
std::span 의 비교 연산자 제거 P1085R2 10 8 19.26* 10.0.1*
상태 저장 할당자 전파를 operator+(basic_string) 에 대해 더 일관성 있게 만들기 P1165R1 10 15 19.26* 14.0.3*
일관된 컨테이너 삭제, 예: std::erase(std::vector) , 또는 std::erase_if(std::map) ( FTM ) * P1209R0
P1115R3
9*
10*
8*
11*
19.25* *
19.27* *
10.0.1* *
12.0.5* *
표준 라이브러리 헤더 유닛 P1502R1 11 19.29 (16.10)*
polymorphic_allocator<> 어휘 타입으로서  ( FTM ) * P0339R6 9 16 19.28 (16.9)* 15.0.0*
std::execution::unseq ( FTM ) * P1001R2 9 17 19.28 (16.8)*
std::lerp() std::midpoint() ( FTM ) * P0811R3 9 9 19.23* (부분적)
19.28 (16.8)*
11.0.3*
std::span 의 사용성 향상 P1024R3 10 9*
14
19.26* 11.0.3*
DR17: std::create_directory() 직관적으로 만들기 P1164R1 8.3 12 19.20* 13.0.0*
std::ssize() 및 부호 없는 범위에 대한 std::span ( FTM ) * P1227R2 10 9 19.25* 11.0.3*
( un ) bounded 배열을 위한 특성  ( FTM ) * P1357R1 9 9 19.25* 11.0.3*
std::to_array() ( FTM ) * P0325R4 10 10 19.25* 12.0.0*
std::basic_stringbuf 버퍼에 대한 효율적인 접근 P0408R7 11 17 19.29 (16.10)* 15.0.0*
레이아웃 - 호환성 포인터 - 상호 변환성 특성  ( FTM ) * ( FTM ) * P0466R5 12 19.29 (16.10)* *
비트 연산 : std ::

rotl() , rotr() , countl_zero() , countl_one() , countr_zero() , countr_one() , popcount() ( FTM ) *

P0553R4 9 9 19.25* *
19.28 (16.8)*
11.0.3*
수학 상수 ( FTM ) * P0631R8 10 11 19.25* 12.0.5*
텍스트 포맷팅 ( FTM ) * P0645R10 13 14 * *
17
19.29 (16.10)* 15.0.0*
std::stop_token std::jthread ( FTM ) * P0660R10 10 17
(부분적)*

20*
19.28 (16.9)*
constexpr std::allocator 및 관련 유틸리티  ( FTM ) * P0784R7 10 12 19.29 (16.10)* 13.0.0*
constexpr std::string ( FTM ) * P0426R1
P1032R1
P0980R1
12 15 19.29 (16.10)*
19.30* *
14.0.3*
constexpr std::vector ( FTM ) * P1004R2 12 15 19.29 (16.10)*
19.30* *
14.0.3*
입력 범위 어댑터 P1035R7 10 16 19.29 (16.10)* 15.0.0*
constexpr std::invoke() 및 관련 유틸리티 P1065R2 10 12 19.28 (16.8)* 13.0.0*
원자적 대기 및 알림, std::counting_semaphore , std::latch std::barrier ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1135R6 11 11 19.28 (16.9)* 13.1.6*
std::source_location ( FTM ) * P1208R6 11 15*
(부분적)
16
19.29 (16.10)* 15.0.0*
표준 라이브러리에 <=> 추가 P1614R2 10 14*
(부분 구현)
17*
(부분 구현)
19
19.29 (16.10)* 13.1.6* (부분 구현)
constexpr 의 기본 생성자 std::atomic std::atomic_flag ( FTM ) * P0883R2 10 13 19.26* 13.1.6*
constexpr 숫자 알고리즘에 대한 numeric algorithms ( FTM ) * P1645R1 10 12 19.26* 13.0.0*
안전한 정수 비교 함수 ( FTM ) * P0586R2 10 13 19.27* 13.1.6*


C++20 기능


논문
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*