C++11
提供: cppreference.com
< cpp
C++11
は C++ の2番目のメジャーバージョン (ひとつ前は C++98、次は C++17) であり、 C++98 以来の最も重要な更新です。 既存の習慣の標準化と C++ プログラマに利用可能な抽象化の改善の両方のために多数の変更が導入されました。
最終的に2011年8月12日にISOに承認されるまでは「C++0x」という名前が使用されていました (2010年より前に発行されると期待されていたため)。 C++03 と C++11 の間には8年が経ち、バージョン間の間隔が最も長くなりました。 それ以降は、現在のところ、 C++ は3年ごとに定期的に更新されています。
This section is incomplete Reason: more detailed description |
以下の機能が C++11 にマージされました。
- TR1 から: 特殊関数を除く TR1 のすべて。
- Boost から: スレッドライブラリ、exception_ptr、 error_code および error_condition、イテレータの改善 (std::begin, std::end, std::next, std::prev)
- C から: C スタイルの Unicode 変換関数
目次 |
[編集] コア言語の機能
- auto および decltype
- デフォルト化された関数と削除された関数
- final と override
- 後置戻り値型
- 右辺値参照
- ムーブコンストラクタ/ムーブ代入
- スコープ付き列挙
- constexpr とリテラル型
- リスト初期化
- 委譲コンストラクタと継承コンストラクタ
- 波括弧または等号の初期化子
- nullptr
- long long
- char16_t と char32_t
- 型エイリアス
- 可変長テンプレート
- 一般化された共用体
- 一般化された POD
- Unicode 文字列リテラル
- ユーザ定義リテラル
- 属性
- ラムダ式
- noexcept
- alignof と alignas
- マルチスレッド対応のメモリモデル
- スレッドローカルストレージ
- GC インタフェース
- 範囲 for (Boost ライブラリを基にしています)
- static_assert (Boost ライブラリを基にしています)
This section is incomplete |
[編集] ライブラリの機能
[編集] ヘッダ
- <typeindex>
- <type_traits>
- <chrono>
- <initializer_list>
- <tuple>
- <scoped_allocator>
- <cstdint>
- <cinttypes>
- <system_error>
- <cuchar>
- <array>
- <forward_list>
- <unordered_set>
- <unordered_map>
- <random>
- <ratio>
- <cfenv>
- <regex>
- <atomic>
- <thread>
- <mutex>
- <future>
- <condition_variable>
[編集] ライブラリの機能
- アトミック操作ライブラリ
- 既存のライブラリのすべての部分に渡る emplace() および右辺値参照のその他の用法
- std::initializer_list
- ステートフルかつスコープ付きのアロケータ
- forward_list
- chrono ライブラリ
- ratio ライブラリ
- 新しいアルゴリズム
- Unicode 変換ファセット
- スレッドライブラリ
- exception_ptr
- error_code と error_condition
- イテレータの改善:
This section is incomplete |
[編集] 欠陥報告
[編集] コンパイラのサポート状況
主記事: C++ コンパイラのサポート状況
[編集] C++11 のコア言語の機能
C++11 の機能 |
文書 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
IBM XLC++ |
Sun/Oracle C++ |
Embarcadero C++ Builder |
Cray |
Portland Group (PGI) |
Nvidia nvcc |
HP aCC |
Digital Mars C++ |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
C99 のプリプロセッサ | N1653 | 4.3 | Yes | 19.0* (partial)* 19.26* |
Yes | 4.1 | 11.1 | 10.1 | 5.9 | Yes | 8.4 | 2015 | 7.0 | A.06.25 | Yes | |
static_assert | N1720 | 4.3 | 2.9 | 16.0* | Yes | 4.1 | 11.0 | 11.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.25 | 8.52 | |
閉じ山括弧 | N1757 | 4.3 | Yes | 14.0* | Yes | 4.1 | 11.0 | 12.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | |||
friend 宣言の拡張 | N1791 | 4.7 | 2.9 | 16.0* (partial) 18.0* |
Yes | 4.1 | 11.1* 12.0 |
11.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.25 | ||
long long | N1811 | Yes | Yes | 14.0* | Yes | Yes | Yes | Yes | Yes | Yes | 8.4 | 2015 | 7.0 | Yes | Yes | |
型特性のためのコンパイラサポート | N1836 | 4.3 | 3.0 | 14.0* | Yes | 4.0 | 10.0 | 13.1.3 | 5.13 | Yes | 8.4 | 2015 | 6.16 | |||
auto | N1984 | 4.4 | Yes | 16.0* | Yes | 3.9 | 11.0 (v0.9) 12.0 |
11.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.25 | ||
委譲コンストラクタ | N1986 | 4.7 | 3.0 | 18.0* | Yes | 4.7 | 14.0 | 11.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | ||
extern template | N1987 | 3.3 | Yes | 12.0* | Yes | 3.9 | 9.0 | 11.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.25 | ||
constexpr | N2235 | 4.6 | 3.1 | 19.0* | Yes | 4.6 | 13.0* 14.0 |
12.1* 13.1 |
5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | ||
テンプレートエイリアス | N2258 | 4.7 | 3.0 | 18.0* | Yes | 4.2 | 12.1 | 13.1.1* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.27 | ||
char16_t と char32_t
|
N2249 | 4.4 | 2.9 | 19.0* | Yes | 4.4 | 12.1* 14.0 |
13.1.1* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.27 | 8.52 | |
alignas | N2341 | 4.8 | 3.0 | 19.0* | Yes | 4.8 | 15.0 | 13.1.2* | 5.13 | Yes | 8.6 | 2015 | 7.0 | |||
alignof | N2341 | 4.5 | 2.9 | 19.0* | Yes | 4.8 | 15.0 | 13.1.2* | 5.13 | Yes | 8.4 | 2015 | 7.0 | |||
関数のデフォルト化と削除 | N2346 | 4.4 | 3.0 | 18.0* | Yes | 4.1 | 12.0 | 13.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.25 | ||
強く型付けされた enum | N2347 | 4.4 | 2.9 | 17.0* | Yes | 4.0 | 13.0 | 12.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.25 | ||
アトミック操作 | N2427 | 4.4 | 3.1 | 17.0* | Yes | Yes | 13.0 | 13.1.2* | 5.14 | Yes | 8.4 | 2015 | ||||
nullptr | N2431 | 4.6 | 2.9 | 16.0* | Yes | 4.2 | 12.1 | 13.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.27 | 8.52 | |
explicit 変換演算子 | N2437 | 4.5 | 3.0 | 18.0* | Yes | 4.4 | 13.0 | 12.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.27 | ||
参照修飾子 | N2439 | 4.8.1 | 2.9 | 19.0* | Yes | 4.7 | 14.0 | 13.1.2* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | ||
Unicode 文字列リテラル | N2442 | 4.4 | 3.0 | 19.0* | Yes | 4.7 | 11.0* | 10.1* 13.1.1* |
5.7 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | 8.52 | |
生文字列リテラル | N2442 | 4.5 | Yes | 18.0* | Yes | 4.7 | 14.0 | 13.1.1*, except AIX xlC 13.1.3 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | 8.52 | |
インライン名前空間 | N2535 | 4.4 | 2.9 | 19.0* | Yes | 4.5 | 14.0 | 11.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | ||
継承コンストラクタ | N2540 | 4.8 | 3.3 | 19.0* | Yes | 4.8 | 15.0 | 13.1.1* | 5.13 | Yes | 8.4 | 2015 | 7.0 | |||
関数の後置戻り値型 | N2541 | 4.4 | 2.9 | 16.0* | Yes | 4.1 | 12.0 | 12.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.27 | ||
共用体の制限緩和 | N2544 | 4.6 | 3.0 | 19.0* | Yes | 4.6 | 14.0* | 13.1.2* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | ||
可変長引数テンプレート | N2242 N2555 |
4.3 (N2242) 4.4 |
2.9 | 18.0* | Yes | 4.3 (N2242) 4.3 |
12.1 | 11.1 (N2242) | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.27 | ||
式 SFINAE | N2634 | 4.4 | 2.9 | 19.14* | Yes | 4.2 | 12.1 | Yes | 8.4 | 2015 | 7.0 | |||||
テンプレート引数としてのローカルな型および無名な型 | N2657 | 4.5 | 2.9 | 16.0* | Yes | 4.2 | 12.0 | 13.1.2* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.27 | ||
スレッドローカルストレージ | N2659 | 4.4 (partial) 4.8 |
3.3* | 16.0* (partial) 19.0* |
Yes | 4.8 | 11.1 (partial) 15.0* |
10.1 (partial)* 13.1.2 (partial)* |
5.9 (partial) | Yes | 8.4 | 2015 | 8.52 (partial) | |||
並行処理と動的初期化および破棄 (魔法の static) | N2660 | 4.3 | 2.9 | 19.0* | Yes | Yes | 11.1* | 13.1.2* | 5.13 | Yes | 8.4 | 2015 | A.06.25 | |||
ガベージコレクションと到達可能性ベースのリーク検出 | N2670 | |||||||||||||||
初期化子リスト | N2672 | 4.4 | 3.1 | 18.0* | Yes | 4.5 | 13.0 (partial) 14.0 |
13.1.2* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | ||
非静的データメンバの初期化子 | N2756 | 4.7 | 3.0 | 18.0* | Yes | 4.6 | 14.0 | 13.1.2* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | ||
属性 | N2761 | 4.8 | 3.3 | 19.0* | Yes | 4.2 | 12.1 | 13.1.1* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.27 | ||
enum の前方宣言 | N2764 | 4.6 | 3.1 | 17.0* | Yes | 4.5 | 11.1 (partial) 14.0 |
12.1 | 5.13 | Yes | 8.4 | 2015 | 7.0 | |||
ユーザ定義リテラル | N2765 | 4.7 | 3.1 | 19.0* | Yes | 4.8 | 15.0 | 13.1.2* | 5.14 | Yes | 8.4 | 2015 | 7.0 | |||
右辺値参照 | N2118 N2844 CWG1138 |
4.3 (N2118) 4.5 |
2.9 | 16.0* (N2844) 17.0* |
Yes | 4.5 | 11.1 (N2118) 12.0 (N2844) 14.0 |
12.1 | 5.13 | Yes | 8.4 | 2015 | 7.0* | A.06.25 | ||
ラムダ式 | N2550 N2658 N2927 |
4.5 | 3.1 | 16.0* (N2658) 17.0* |
Yes | 4.1 | 12.0 | 13.1.2* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.25 | ||
範囲 for ループ | N2930 | 4.6 | 3.0 | 17.0* | Yes | 4.5 | 13.0 | 13.1.2* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | ||
noexcept | N3050 | 4.6 | 3.0 | 19.0* | Yes | 4.5 | 14.0 | 13.1.1* | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.28 | ||
デフォルト化された特別なムーブメンバ関数 | N3053 | 4.6 | 3.0 | 19.0* | Yes | 4.5 | 14.0 | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.25 | |||
override と final | N2928 N3206 N3272 |
4.7 | 2.9 | 14.0* (partial) 17.0* |
Yes | 4.8 | 12.0 (N2928) 14.0 |
13.1.1* | 5.13 | Yes | 8.4 | 2015 | 7.0 | |||
decltype | N2343 N3276 |
4.3 (N2343) 4.8.1 |
2.9 | 16.0* | Yes | 4.2 (N2343) 4.8 |
11.0 (N2343) 12.0 |
11.1 (N2343) | 5.13 | Yes | 8.4 | 2015 | 7.0 | A.06.25 | 8.52 (N2343) | |
C++11 の機能 |
文書 |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
IBM XLC++ |
Sun/Oracle C++ |
Embarcadero C++ Builder |
Cray |
Portland Group (PGI) |
Nvidia nvcc |
HP aCC |
Digital Mars C++ |
[編集] C++11 のライブラリの機能
C++11 の機能 |
文書 |
GCC libstdc++ |
Clang libc++ |
MSVC の 標準ライブラリ |
Apple Clang |
Sun/Oracle C++ の 標準ライブラリ |
Embarcadero C++ Builder の 標準ライブラリ |
Cray C++ の 標準ライブラリ |
|
---|---|---|---|---|---|---|---|---|---|
型特性 | N1836 | 4.3 | 3.0 | 14.0* | Yes | 5.13 | Yes | 8.4 | |
ガベージコレクションと到達可能性ベースのリーク検出 (ライブラリサポート) | N2670 | 6 (no-op) |
3.4 (no-op) |
19.0* (no-op) |
Yes (no-op) |
||||
金額、時間、および16進浮動小数点の入出力マニピュレータ | N2071 N2072 |
5 | 3.8 | 19.0* | Yes | 5.15 | |||
C++11 の機能 |
文書 |
GCC libstdc++ |
Clang libc++ |
MSVC の 標準ライブラリ |
Apple Clang |
Sun/Oracle C++ の 標準ライブラリ |
Embarcadero C++ Builder の 標準ライブラリ |
Cray C++ の 標準ライブラリ |
* - 注釈を見るにはバージョン番号にマウスポインタを当ててください