C++11
ja.cppreference.net より
< cpp
C++11 は C++ の2番目のメジャーバージョンであり、C++98 以降で最も重要なアップデートです。既存のプラクティスを標準化し、C++ プログラマが利用できる抽象化を改善するために、多数の変更が導入されました。
2011年8月12日にISOによって最終承認されるまで、2010年以前に公開されることが期待されていたため、「C++0x」という名前が使用されていました。C++03 から C++11 までは8年かかり、これまでのバージョン間の最長期間となりました。それ以来、現在は C++ は定期的に3年ごとに更新されています。
| このセクションは不完全です |
以下の機能が C++11 に統合されました:
- TR1 から: 特殊関数 を除く TR1 のすべて。
- Boost から: スレッドライブラリ, exception_ptr, error_code および error_condition, イテレータの改善 (begin, end, next, prev)
- C から: C スタイルの Unicode 変換関数
コア言語機能
- auto と decltype
- defaulted と deleted 関数
- final と override
- 末尾の戻り値の型
- 右辺値参照
- ムーブコンストラクタ と ムーブ代入演算子
- スコープ付き列挙型
- constexpr と リテラル型
- リスト初期化
- 委譲 と 継承 コンストラクタ
- 波括弧または等号初期化子
- nullptr
- long long
char16_tとchar32_t- 型エイリアス
- 可変引数テンプレート
- 一般化された(非トリビアル)共用体
- 一般化された POD (トリビアル型 と 標準レイアウト型)
- Unicode 文字列リテラル
- ユーザ定義リテラル
- 属性
- ラムダ式
- noexcept 指定子と noexcept 演算子
- alignof と alignas
- マルチスレッドメモリモデル
- スレッドローカルストレージ
- GC インターフェース (C++23 で削除)
- 範囲
forfor - (Boost ライブラリに基づく)static_assert
| (Boost ライブラリに基づく) |
このセクションは不完全です
ライブラリ機能
- <ヘッダ>
- <array>
- <atomic>
- <cfenv>
- <chrono>
- <cinttypes>
- <condition_variable>
- <cstdint>
- <cuchar>
- <forward_list>
- <future>
- <initializer_list>
- <mutex>
- <random>
- <ratio>
- <regex>
- <scoped_allocator>
- <system_error>
- <thread>
- <tuple>
- <typeindex>
- <type_traits>
- <unordered_map>
unordered_set
- ライブラリ機能
emplace()並行処理サポートライブラリ- および既存ライブラリの全部分における右辺値参照のその他の使用
- std::unique_ptr
- std::move_iterator
- std::initializer_list状態を持つ と スコープ付き
- アロケータ
- std::forward_list
- chrono ライブラリ
- ratio ライブラリ新しいアルゴリズム
- :std::all_of, std::any_of, std::none_of
- ,std::find_if_not
- ,std::copy_if, std::copy_n
- ,std::move, std::move_backward
- ,std::random_shuffle, std::shuffle
- ,std::is_partitioned, std::partition_copy, std::partition_point
- ,std::is_sorted, std::is_sorted_until
- ,std::is_heap, std::is_heap_until
- ,std::minmax, std::minmax_element
- ,std::is_permutation
- ,std::iota
- ,
- std::uninitialized_copy_n
- Unicode 変換ファセット
- std::function
- std::exception_ptrstd::error_code と
- std::error_conditionイテレータ
- の改善:
- std::begin
- std::end
- std::next
| Unicode 変換関数 |
このセクションは不完全です
コンパイラのサポート
C++11 コア言語機能
| C++11 機能 |
論文 |
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++ |
HP aCC |
Digital Mars C++ |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C99 プリプロセッサ | N1653 | 4.3 | Yes | 19.0 (2015)* (partial)* 19.26* |
Yes | 4.1 | 11.1 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 10.1 | 5.9 | A.06.25 | Yes | |
| static_assert (FTM)* | N1720 | 4.3 | 2.9 | 16.0* | Yes | 4.1 | 11.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | 8.52 | |
| 右山括弧 | N1757 | 4.3 | Yes | 14.0* | Yes | 4.1 | 11.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 12.1 | 5.13 | |||
| 拡張されたfriend 宣言 | N1791 | 4.7 | 2.9 | 16.0* | Yes | 4.1 | 11.1 (partial) 12.0 |
2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | ||
long long
|
N1811 | Yes | Yes | 14.0* | Yes | Yes | Yes | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | Yes | Yes | Yes | Yes | |
| auto | N1984 | 4.4 | Yes | 16.0* | Yes | 3.9 | 11.0 (partial)* 12.0 |
2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | ||
| 委譲コンストラクタ (FTM)* | N1986 | 4.7 | 3.0 | 18.0* | Yes | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.28 | ||
extern template
|
N1987 | 3.3 | Yes | 12.0* | Yes | 3.9 | 9.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | ||
| constexpr (FTM)* | N2235 | 4.6 | 3.1 | 19.0 (2015)* | Yes | 4.6 | 13.0 (partial) 14.0 |
2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 12.1 (partial) 13.1 |
5.13 | A.06.28 | ||
char16_t と char32_t (FTM)*
|
N2249 | 4.4 | 2.9 | 19.0 (2015)* | Yes | 4.4 | 12.1 (partial)* 14.0 |
2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | A.06.27 | 8.52 | |
| コンパイラの型特性サポート。 N2255* | N2255 N2984 N3142 |
4.3 (partial)* 4.8 (partial)* 5 |
3.0 | 14.0* (partial)* 19.0 (2015)* |
Yes | 4.0 | 10.0 | 2015 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.3 | 5.13 | 6.16 | |||
| テンプレートエイリアス (FTM)* | N2258 | 4.7 | 3.0 | 18.0* | Yes | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | A.06.27 | ||
| alignas | N2341 | 4.8 | 3.0 | 19.0 (2015)* | Yes | 4.8 | 15.0 | 2015 | 7.0 | 8.6 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | |||
| alignof | N2341 | 4.5 | 2.9 | 19.0 (2015)* | Yes | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | |||
| defaulted 関数と deleted 関数 | N2346 | 4.4 | 3.0 | 18.0* | Yes | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1 | 5.13 | A.06.25 | ||
強い型付けのenum
|
列挙型 | N2347 | 4.4 | 2.9
16.0* (partial) |
17.0* | Yes | 4.0 | 13.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 12.1 | 5.13 | ||
| A.06.25 | アトミック操作 | N2427 | 4.4 | 3.1 | 17.0* | Yes | Yes | 13.0 | 2015 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | ||||
| 5.14 | nullptr | N2431 | 4.6 | 2.9 | 16.0* | Yes | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1 | 5.13 | A.06.27 | |
| 8.52 明示的な | 変換演算子 | N2437 | 4.5 | 3.0 | 18.0* | Yes | 4.4 | 13.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 12.1 | 5.13 | ||
| A.06.27 ref 修飾子 (FTM) | * | N2439 | 4.8.1 | 2.9 | 19.0 (2015)* | Yes | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | ||
| A.06.28 Unicode 文字列リテラル (FTM) | * | N2442 | 4.4 | 3.0 | 19.0 (2015)* | Yes | 4.7 | 11.0* | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0
10.1* |
13.1.1* | 5.7 | A.06.28 | |
| 8.52 生の 文字列リテラル (FTM) | * | N2442 | 4.5 | Yes | 18.0* | Yes | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.1, AIX xlC 13.1.3 を除く* | 5.13 | A.06.28 | |
| 8.52 | インラインネームスペース | N2535 | 4.4 | 2.9 | 19.0 (2015)* | Yes | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 11.1 | 5.13 | ||
| A.06.28 継承コンストラクタ (FTM) | * | N2540 | 4.8 | 3.3 | 19.0 (2015)* | Yes | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.1* | |||
| 5.13 | 末尾戻り値の型 | N2541 | 4.4 | 2.9 | 16.0* | Yes | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 12.1 | 5.13 | ||
| A.06.27 制限のないunion | N2544 | 4.6 | 3.0 | 19.0 (2015)* | Yes | 4.6 | 14.0* | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
| 可変引数テンプレート (FTM)* | N2242 N2555 |
4.3 (partial)* 4.4 |
2.9 | 18.0* | Yes | 4.3 (partial)* 4.3 |
12.1 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 11.1 (partial)* | 5.13 | A.06.27 | ||
| 式 SFINAE | N2634 | 4.4 | 2.9 | 19.14* | Yes | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | |||||
| ローカル型と匿名型のテンプレートパラメータ | N2657 | 4.5 | 2.9 | 16.0* | Yes | 4.2 | 12.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.27 | ||
| スレッドローカルストレージ | N2659 | 4.4 (partial) 4.8 |
3.3* | 16.0* (partial) 19.0 (2015)* |
Yes | 4.8 | 11.1 (partial) 15.0* |
2015 | 8.4 | Yes | 17.1.0 | 1.1.0 | 10.1 (partial)* 13.1.2 (partial)* |
5.9 (partial) | 8.52 (partial) | |||
| 並行処理を伴う動的初期化と破棄 (magic statics) (FTM)* | N2660 | 4.3 | 2.9 | 19.0 (2015)* | Yes | Yes | 11.1* | 2015 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.25 | |||
| ガベージコレクションと到達可能性ベースのリーク検出 | N2670 | |||||||||||||||||
| 初期化子リスト (FTM)* | N2672 | 4.4 | 3.1 | 18.0* | Yes | 4.5 | 13.0 (partial) 14.0 |
2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
| 非静的データメンバ初期化子 (FTM)* | N2756 | 4.7 | 3.0 | 18.0* | Yes | 4.6 | 14.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
属性, [[noreturn]] (FTM)*
|
N2761 | 4.8 | 3.3 | 19.0 (2015)* | Yes | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | A.06.27 | ||
[[carries_dependency]]
|
N2556 N2643 |
3.3* | 17.1.0* | |||||||||||||||
前方(不透明な)enum宣言
|
N2764 | 4.6 | 3.1 | 17.0* | Yes | 4.5 | 11.1 (partial) 14.0 |
2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 12.1 | 5.13 | |||
| ユーザ定義リテラル (FTM)* | N2765 | 4.7 | 3.1 | 19.0 (2015)* | Yes | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |||
| 右辺値参照 (FTM)* | N2118 N2844 CWG1138 |
4.3 (partial)* 4.5 |
2.9 | 16.0* (partial)* 17.0* |
Yes | 4.5 | 11.1 (partial)* 12.0 (partial)* 14.0 |
2015 | 7.0* | 8.4 | Yes | 17.1.0 | 1.1.0 | 12.1 | 5.13 | A.06.25 | ||
| ラムダ式 (FTM)* | N2550 N2658 N2927 |
4.5 | 3.1 | 16.0* (partial)* 17.0* |
Yes | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.25 | ||
| 範囲 for ループ (FTM)* | N2930 N3271 |
4.6 | 3.0 | 17.0* | Yes | 4.5 | 13.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
| noexcept | N3050 | 4.6 | 3.0 | 19.0 (2015)* | Yes | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | A.06.28 | ||
| デフォルト化されたムーブ特殊 メンバ 関数 | N3053 | 4.6 | 3.0 | 19.0 (2015)* | Yes | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 5.13 | A.06.25 | |||
| override と final | N2928 N3206 N3272 |
4.7 | 2.9 | 14.0* (partial) 17.0* |
Yes | 4.8 | 12.0 (partial)* 14.0 |
2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | |||
| decltype (FTM)* | N2343 N3276 |
4.3 (partial)* 4.8.1 |
2.9 | 16.0* (partial)* 17.0* |
Yes | 4.2 (partial)* 4.8 |
11.0 (partial)* 12.0 |
2015 | 7.0 | 8.4 | Yes | 17.1.0 | 1.1.0 | 11.1 (partial)* | 5.13 | A.06.25 | 8.52 (partial)* | |
| C++11 機能 |
論文 |
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++ |
HP aCC |
Digital Mars C++ |
C++11 ライブラリ機能
| C++11 機能 |
論文 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
IBM Open XL C/C++ for AIX* |
Sun/Oracle C++* |
Embarcadero C++ Builder* |
|
|---|---|---|---|---|---|---|---|---|---|
| 正規表現ライブラリ | N1429 | 4.9 | 2.8 | Yes | Yes | 17.1.0 | |||
| 型特性。 N1836* | N1836 N2240 N2244 N2255 N2342 N2984 N3142 |
4.3 (partial)* 4.8 (partial)* 5 |
3.0 | 14.0* (partial)* 19.0 (2015)* |
Yes | 17.1.0 | 5.13 | Yes | |
メンバ関数 cbegin, cend, crbegin, および crend コンテナの
|
N1913 LWG1192 |
4.3 (partial)* 4.5 |
Yes* | 16.0* | Yes* | 17.1.0 | |||
| ガベージコレクション と到達可能性ベースのリーク検出 (ライブラリサポート) | N2670 | 6 (no-op)* |
3.4 (no-op)* |
19.0 (2015)* (no-op)* |
Yes (no-op)* |
17.1.0 | |||
| 通貨、時間、および hexfloat I/O マニピュレータ | N2071 N2072 |
5 | 3.8 | 19.0 (2015)* | Yes | 17.1.0 | 5.15 | ||
| 禁止するCOW (copy-on-write) std::basic_string | N2668 | 5 | Yes | Yes | Yes | 17.1.0 | Yes | ||
| C++11 機能 |
論文 |
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++11 - Wikipedia |
| 2. | C++11 の実例 |