C++14
출처: ko.cppreference.net
< cpp
C++14는 주요 버전 C++11 이후의 마이너 버전으로, 주로 사소한 개선 및 결함 수정이 포함됩니다. 승인은 2014년 8월 18일에 발표되었으며, 2014년 12월 15일에 출시되었습니다.
승인 전에는 C++1y가 2010년대 출시를 가리키는 용어로 사용되기도 했습니다.
| 이 섹션은 불완전합니다. |
새로운 언어 기능
- 변수 템플릿
- 제네릭 람다
- 람다 초기화 캡처
- new/delete 생략
- constexpr 함수에 대한 제한 완화
- 이진 리터럴
- 숫자 구분 기호
- 함수의 반환 형식 추론
- 집계 클래스 기본 비정적 멤버 초기화 포함.
새로운 라이브러리 기능
- std::make_unique
- std::shared_timed_mutex 및 std::shared_lock
- std::integer_sequence
- std::exchange
- std::quoted
- 및 기존 라이브러리 기능에 대한 많은 작은 개선 사항 (예:
- 일부 알고리즘의 두 범위 오버로드
- 형식 특성의 형식 별칭 버전
- 사용자 정의 리터럴 (basic_string, duration 및 complex
- 등)
| 이 섹션은 불완전합니다. |
결함 보고서
컴파일러 지원
C++14 핵심 언어 기능
| C++14 기능 |
논문 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (구 PGI)* |
Nvidia nvcc |
Cray |
Embarcadero C++ Builder |
IBM Open XL C++ for AIX |
IBM Open XL C++ for z/OS |
IBM XL C++ |
Sun/Oracle C++ |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 에 대한 조정된 표현 contextual conversions | N3323 | 4.9 | 3.4 | 18.0* | 예 | 4.9 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| 이진 리터럴 (FTM)* | N3472 | 4.3* 4.9 |
2.9 | 19.0 (2015)* | 예 | 4.10 | 11.0 | 2015 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |
| decltype(auto), 일반 함수의 반환 형식 추론 (FTM)* (FTM)* | N3638 | 4.8 (부분)* 4.9 |
3.3 (부분)* 3.4 |
19.0 (2015)* | 예 | 4.9 | 15.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| 초기화/일반화된 람다 캡처 (init-capture) (FTM)* | N3648 | 4.5 (부분) 4.9 |
3.4 | 19.0 (2015)* | 예 | 4.10 | 15.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.15 | |
| 제네릭 람다 표현식 (FTM)* | N3649 | 4.9 | 3.4 | 19.0 (2015)* | 예 | 4.10 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| 변수 템플릿 (FTM)* | N3651 | 5 | 3.4 | 19.0 (업데이트 2)* | 예 | 4.11 | 17.0 | 17.4 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
확장된 constexpr (FTM)*
|
N3652 | 5 | 3.4 | 19.10* | 예 | 4.11 | 17.0 | 17.4 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| 기본 멤버 초기화가 있는 집계default member initializers (FTM)* | N3653 | 5 | 3.3 | 19.10* | 예 | 4.9 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.14 | |
| 메모리 할당 생략/확장memory allocations | N3664 | N/A | 3.4 | N/A | 예 | N/A | N/A | 17.4 | N/A | 8.6 | 10.3 | 17.1.0 | 1.1.0 | N/A | N/A | |
[[deprecated]] 속성
|
N3760 | 4.9 | 3.4 | 19.0 (2015)* | 예 | 4.9 | 15.0* 16.0 |
16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |
| 크기 기반 할당 해제 (FTM)* | N3778 | 5 | 3.4 | 19.0 (2015)* | 예 | 4.10.1 | 17.0 | 16.1 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.14 | ||
| 작은따옴표를 숫자 구분 기호로 사용 | N3781 | 4.9 | 3.4 | 19.0 (2015)* | 예 | 4.10 | 16.0 | 2015 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |
| C++14 기능 |
논문 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (구 PGI)* |
Nvidia nvcc |
Cray |
Embarcadero C++ Builder |
IBM Open XL C++ for AIX |
IBM Open XL C++ for z/OS |
IBM XL C++ |
Sun/Oracle C++ |
C++14 라이브러리 기능
| C++14 기능 |
논문 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |
|
|---|---|---|---|---|---|---|---|---|---|
constexpr에 대한 <complex>
|
N3302 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
| 투명 연산자 함수 객체 (FTM)* | N3421 | 4.9 | 3.4 | 18.0* | 예 | 17.1.0 | 5.15 | 10.3 | |
| std::result_of 및 SFINAE (FTM)* | N3462 | 5 | 예 | 19.0 (업데이트 2)* | 예 | 17.1.0 | 5.15 | 10.3 | |
constexpr에 대한 <chrono>
|
N3469 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
constexpr에 대한 <array>
|
N3470 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
constexpr에 대한 <initializer_list>, <utility> 및 <tuple>
|
N3471 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
| 개선된 std::integral_constant (FTM)* | N3545 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
| 사용자 정의 리터럴에 대한<chrono>및<string> (FTM)* (FTM)* | N3642 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
| 널 전방 반복자 (FTM)* | N3644 | 5 (부분) 10 |
3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
| std::quoted (FTM)* | N3654 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
| std::make_unique (FTM)* | N3656 | 4.9 | 3.4 | 18.0* | 예 | 17.1.0 | 5.15 | 10.3 | |
| 이종 연관 검색 (FTM)* | N3657 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
| std::integer_sequence (FTM)* | N3658 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
| std::shared_timed_mutex | N3659 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
| std::exchange (FTM)* | N3668 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | 10.3 | |
수정: constexpr 멤버 함수 (const
|
없이) | N3669 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | |
| 10.3 형식으로 튜플 주소 지정: <std::get>T () (FTM) | * | N3670 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | |
| 10.3 이중 범위 std::equal, std::is_permutation, std::mismatch (FTM) | * | N3671 | 5 | 3.4 | 19.0 (2015)* | 예 | 17.1.0 | 5.15 | |
| 10.3 변환 특성의 별칭 템플릿 transformation traits (FTM) | * | N3655 | 4.9 | 3.4 | 18.0* | ||||
예std::complex 사용자 정의 리터럴 (FTM)*
|
N3779 | 4.9 | 3.4 | 19.0 (2015)* | 예 | ||||
| DR11: std::is_null_pointer (FTM)* | LWG2247 | 4.9 | 3.4 | 19.0 (2015)* | |||||
| std::is_final (FTM)* | LWG2112 | 5 | 3.4 | 19.0 (2015)* | |||||
| std::make_reverse_iterator (FTM)* | LWG2285 | 5 | 3.4 | 19.0 (2015)* | |||||
| std::shared_timed_mutex (FTM)* | N3891 | 4.9 | 3.5 | 19.0 (2015)* | 예 | ||||
| std::tuple_element_t (FTM)* | N3887 | 4.10 | 3.5 | 19.0 (2015)* | 예 | ||||
| C++14 기능 |
논문 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |
* - 별표가 표시된 셀 위로 마우스를 가져가면 추가 팝업 노트를 볼 수 있습니다.* -
DRnn - 번호 nn은 "DR" 뒤에 결함 보고서가 적용되는 대상 C++ 개정을 나타냅니다. 예: DR20 → C++20.
외부 링크
| 1. | C++14 - 위키백과 |
| 2. | 작동하는 C++14 예제 |