C++14
From cppreference.com
< cpp
C++14は、メジャーバージョンであるC++11に続くマイナーバージョンであり、主に小規模な改善と不具合の修正を特徴としています。その承認は2014年8月18日に発表され、2014年12月15日にリリースされました。
承認前には、2010年代のリリースを示すためにC++1yが使われることがありました。
| このセクションは未完成です |
目次 |
[編集] 新しい言語機能
- 変数テンプレート
- ジェネリックラムダ
- ラムダの初期化キャプチャ
- new/deleteの省略
- constexpr関数の制限緩和
- 2進数リテラル
- 桁区切り文字
- 関数の戻り値の型推論
- デフォルトの非静的メンバ初期化子を持つ集成体クラス。
[編集] 新しいライブラリ機能
- std::make_unique
- std::shared_timed_mutex と std::shared_lock
- std::integer_sequence
- std::exchange
- std::quoted
- その他、既存のライブラリ機能に対する多くの小さな改善
- 一部のアルゴリズムに対する2つの範囲を取るオーバーロード
- 型特性の型エイリアス版
- 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++ |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 文脈変換の文言調整 | 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 | |
| 2進数リテラル (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 | |
| 初期化/一般化されたラムダキャプチャ(初期化キャプチャ) (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* | はい | 4.9 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.14 | |
| メモリ割り当ての省略/拡張 | 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* |
|
|---|---|---|---|---|---|---|---|---|---|
| <complex>のconstexpr | N3302 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| 透過的な演算子関数オブジェクト (FTM)* | N3421 | 4.9 | 3.4 | 18.0* | Yes | 17.1.0 | 5.15 | 10.3 | |
| std::result_ofとSFINAE (FTM)* | N3462 | 5 | はい | 19.0 (Update 2)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| <chrono>のconstexpr | N3469 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| <array>のconstexpr | N3470 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| <initializer_list>、<utility>、<tuple>のconstexpr | 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)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| <chrono>と<string>のユーザー定義リテラル (FTM)* (FTM)* | N3642 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| Null前方イテレータ (FTM)* | N3644 | 5 (部分的) 10 |
3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| std::quoted (FTM)* | N3654 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| std::make_unique (FTM)* | N3656 | 4.9 | 3.4 | 18.0* | Yes | 17.1.0 | 5.15 | 10.3 | |
| 異種連想コンテナ検索 (FTM)* | N3657 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| std::integer_sequence (FTM)* | N3658 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| std::shared_timed_mutex | N3659 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| std::exchange (FTM)* | N3668 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| constでないconstexprメンバ関数の修正 | 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)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| 2つの範囲を取るstd::equal, std::is_permutation, std::mismatch (FTM)* | N3671 | 5 | 3.4 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | 10.3 | |
| 変換特性のエイリアステンプレート (FTM)* | N3655 | 4.9 | 3.4 | 18.0* | Yes | ||||
std::complexのユーザー定義リテラル (FTM)* |
N3779 | 4.9 | 3.4 | 19.0 (2015)* | Yes | ||||
| 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)* | Yes | ||||
| std::tuple_element_t (FTM)* | N3887 | 4.10* | 3.5 | 19.0 (2015)* | Yes | ||||
| C++14の機能 |
提案文書 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |
* - 星印*が付いているセルにカーソルを合わせると、追加のポップアップノートが表示されます。
DRnn - 「DR」の後の数字nnは、欠陥報告が適用される対象のC++リビジョンを示します。例: DR20 → C++20
[編集] 外部リンク
| 1. | C++14 - Wikipedia |
| 2. | 動作するC++14のサンプル |