C++14
From cppreference.net
<
cpp
C++14는 주요 버전인 C++11 이후의 마이너 버전으로, 주로 사소한 개선과 결함 수정을 특징으로 합니다. 승인은 2014년 8월 18일에 발표되었으며, 2014년 12월 15일에 출시되었습니다.
승인되기 전에, C++1y는 때때로 2010년대 출시를 나타내는 데 사용됩니다.
| 이 섹션은 불완전합니다 |
목차 |
새로운 언어 기능
- 변수 템플릿
- 제네릭 람다
- 람다 초기화 캡처
- new/delete 생략
- constexpr 함수 제한 완화
- 2진수 리터럴
- 숫자 구분자
- 함수 반환형 추론
- 기본 비정적 멤버 초기화자를 갖는 집계 클래스
새로운 라이브러리 기능
- 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++ (ex 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* | Yes | 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 (Update 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 | |
| 기본 멤버 초기화자를 갖는 집계체 ( FTM ) * | N3653 | 5 | 3.3 | 19.10* | Yes | 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 | Yes | 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++ (ex 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 for <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 (Update 2)* | 예 | 17.1.0 | 5.15 | 10.3 | |
| constexpr for <chrono> | N3469 | 5 | 3.4 | 19.0 (2015)* | 지원 | 17.1.0 | 5.15 | 10.3 | |
| constexpr for <array> | N3470 | 5 | 3.4 | 19.0 (2015)* | 지원 | 17.1.0 | 5.15 | 10.3 | |
| constexpr for <initializer_list> , <utility> and <tuple> | N3471 | 5 | 3.4 | 19.0 (2015)* | Yes | 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 | |
| 사용자 정의 리터럴 for <chrono> 및 <string> ( FTM ) * ( FTM ) * | N3642 | 5 | 3.4 | 19.0 (2015)* | Yes | 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 ( 기능 테스트 매크로 ) * | 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)* | Yes | 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 | |
| 변환 특성에 대한 앨리어스 템플릿 ( FTM ) * | N3655 | 4.9 | 3.4 | 18.0* | Yes | ||||
std::complex에 대한
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*
|
*
- 별표로 표시된 셀 위에 마우스를 올리면
*
추가 팝업 노트를 볼 수 있습니다.
DR
nn
- "DR" 뒤의 숫자
nn
은 결함 보고서가 적용되는 대상 C++ 개정판을 나타냅니다(예: DR20 → C++20).
외부 링크
| 1. | C++14 - 위키백과 |
| 2. | 동작하는 C++14 예제 |