C++14は、C++11に対するマイナーアップデートです。仕様のバグ修正や、C++11の比較的小さめな機能不足を補うバージョンになっています。
細かすぎる変更はさすがに書きませんが、ある程度大きめの変更を以下にまとめます。
この内容は、正式に策定されるまでに変更される可能性があります。
コア言語
- 2進数リテラル
- 変数テンプレート
- 通常の関数の戻り値型を推論
- ジェネリックラムダ
- 一般化されたラムダキャプチャ
- constexpr関数の制限緩和
- どこからともなく現れる結果の規定(前半, 後半)
- [[deprecated]]属性
- 数値リテラルの桁区切り文字
- サイズ付きのデアロケーション
- initializer-listによるaggregate初期化の制約緩和
- ロックフリーの定義
- シグナルハンドラでできることの制限緩和と明確化
ライブラリ
- make_unique()
- コンパイル時整数シーケンス
- tupleの型指定get()
- quotedマニピュレータ
- 共有ロック
- integral_constantに関数呼び出し演算子を追加
- ヌル前方イテレータの規定
- 2つの範囲をとるアルゴリズムに、2つ目の範囲の終端を与えるバージョンを追加
- 2項演算関数オブジェクトをよりジェネリックに
- exchange()関数
- エイリアステンプレート版のType Traits
- フリー関数版のcbegin()/cend()
- constexpr対応
- std::complexの標準ユーザー定義リテラル
- 文字列オブジェクトリテラルと時間リテラル
- 連想コンテナの異種混合比較ルックアップ
- 非推奨化
- 廃止
以下は、C++14後に追加でTechnical Specificationとして入れる予定のものです。
C++14がさらにマイナーバージョンアップすると考えてください。
以下の機能は、C++14期間中に導入が間に合えばstd::experimental
名前空間で入り、C++17で正式にstd
名前空間に入ります。
基本的なユーティリティ(Library Fundamentals TS)
- optionalクラス
- 変数テンプレート版のType Traits
- ランダムサンプリング
- iterator_traitsをSFINAEで使えるようにする(TODO)
- string_view
- shared_ptrの配列サポート
- 多相的なメモリリソース
- タプルを関数の引数として渡すためのapply()関数(TODO)
- std::search()アルゴリズムの拡張(TODO)
配列関係(Array Extensions TS)
コンセプト(Concept TS)
ファイルシステム(File System TS)
並行(Concurrency TS)
- スケジューラ(TODO)
- future関係のAPI改善(TODO)
- await(TODO)
- 並行ハッシュコンテナ
並列(Parallelism TS)
ネットワーク(Networking TS)
ドラフト仕様の変更履歴一覧
- N3486 C++ Editor's Report, October 2012
- N3692 C++ Editor's Report, May 2013
- N3798 C++ Editor's Report, October 2013
- N3938 Editor's Report