Namespaces
Variants

C++14

From cppreference.net

C++14はメジャーバージョンであるC++11の後にリリースされたマイナーバージョンであり、主に小幅な改善と欠陥修正が特徴です。その承認は2014年8月18日に発表されました。2014年12月15日にリリースされました。

承認前、C++1yは2010年代のリリースを示すために使用されることがあります。

目次

新しい言語機能

新規ライブラリ機能

不具合報告

C++14で修正された欠陥報告 (276 core, 158 library)

コンパイラサポート

C++14 コア言語機能

変更点: - 「Tweaked wording for」→「の文言を調整」(自然な日本語語順になるように配置) - 「contextual conversions」→「文脈に応じた変換」(C++の専門用語として適切な訳語) - 「Yes」→「はい」(表の値として自然な日本語表現) HTMLタグ、属性、数値、リンクテキスト(N3323)、タイトル属性などはすべて原文のまま保持しています。
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
バイナリリテラル ( 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* はい 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 ライブラリ機能

変更点: - "for" を「向け」に翻訳 - "Yes" を「対応」に翻訳 - HTMLタグ、属性、コードブロック(`constexpr`、` `)は翻訳せず保持 - C++専門用語はそのまま保持 - 書式と構造は完全に維持 翻訳内容: - `FTM` → `機能テストマクロ` - `Feature-testing macro` → `機能テストマクロ` - `Yes` → `対応` 注意点: - HTMLタグ、属性、C++固有の用語(`std::quoted`、`__cpp_lib_quoted_string_io`など)は翻訳せず保持 - 数値、バージョン情報、リンクテキスト(N3654)はそのまま保持 - タイトル属性内のテキストも適切に翻訳 翻訳内容: - `Feature-testing macro:` → `機能テストマクロ:` - `Yes` → `対応` - C++固有の用語(`std::make_unique`、`FTM`、`__cpp_lib_make_unique`、`N3656`、`VS 2013`)は翻訳せず保持 - HTMLタグ、属性、コード内のテキストは完全に保持 翻訳内容: - `Feature-testing macro:` → `機能テストマクロ:` - `Yes` → `はい` 注意事項: - HTMLタグ、属性はそのまま保持 - ` `, `
`, ``タグ内のテキストは翻訳対象外(該当箇所なし)
- C++固有用語(`std::integer_sequence`, `FTM`, `__cpp_lib_integer_sequence`など)は翻訳せず保持
- 数値、バージョン情報、リンクテキストはそのまま保持
変更点: - "Yes" を「はい」に翻訳 - HTMLタグ、属性、C++固有の用語(std::shared_timed_mutex)、数値、バージョン情報などはそのまま保持 - タイトル属性内のテキストも翻訳対象外として保持 翻訳内容: - `Feature-testing macro:` → `機能テストマクロ:` - `Yes` → `対応` - C++固有の用語(`std::exchange`、`FTM`、`__cpp_lib_exchange_function`)は翻訳せず保持 - HTMLタグ、属性、コード内のテキストは完全に保持 - 数値、バージョン情報、リンクテキストは変更なし **注記**: このHTMLフラグメントには翻訳すべきテキストがほとんど含まれていません。唯一のテキスト要素は「DR11」と「FTM」ですが、これらはC++標準化委員会の専門用語(Defect Report 11, Feature Testing Macro)であり、翻訳対象外と判断しました。その他の要素はHTMLタグ、属性、数値、リンクテキスト(LWG2247)で構成されています。 変更点: - `Feature-testing macro:` → `機能テストマクロ:` - その他のC++関連用語(`std::is_final`、`FTM`、`LWG2112`、バージョン番号など)は翻訳せず保持 - HTMLタグ、属性、構造は完全に保持 - ` `内のテキストも翻訳対象外として保持 翻訳内容: - "FTM" → "機能テストマクロ" (Feature-testing macro) - "Feature-testing macro" → "機能テストマクロ" - "Yes" → "はい" - `std::shared_timed_mutex`、`__cpp_lib_shared_timed_mutex`、`N3891`、バージョン番号などはC++固有の用語として翻訳せず保持 - HTMLタグ、属性、` `内のコード部分は完全に保持 変更点: - 「Yes」を「はい」に翻訳 - HTMLタグ、属性、C++固有の用語(`std::tuple_element_t`、`FTM`、`N3887`など)は翻訳せず保持 - 数値、バージョン情報、コード関連のテキストはそのまま維持
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 <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> および <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 ( 機能テストマクロ ) * 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)* Yes 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* 対応
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 ( 機能テストマクロ ) * 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 - Wikipedia
2. 動作するC++14の例