C++11
From cppreference.net
<
cpp
C++11 はC++の2番目のメジャーバージョンであり、C++98以降最も重要なアップデートです。既存のプラクティスの標準化と、C++プログラマーが利用可能な抽象化の改善の両方に対して、多数の変更が導入されました。
ISOによって2011年8月12日に最終承認される前は、2010年より前に公開されると予想されていたため「C++0x」という名前が使用されていました。C++03とC++11の間には8年かかっており、これまでで最も長いバージョン間隔となっています。それ以来、現在ではC++は3年ごとに定期的に更新されています。
| このセクションは不完全です |
C++11にマージされた機能は以下の通りです:
- TR1から: TR1 : 特殊関数 を除くTR1の全て
- Boostから: スレッドライブラリ , exception_ptr , error_code および error_condition , イテレータ改善 ( begin , end , next , prev )
- Cから: CスタイルのUnicode変換関数
目次 |
コア言語機能
- auto および decltype
- デフォルト化 および 削除済み 関数
- final および override
- 後置戻り値型
- 右辺値参照
- ムーブコンストラクタ および ムーブ代入演算子
- スコープ付き列挙型
- constexpr および リテラル型
- リスト初期化
- 委譲 および 継承 コンストラクタ
- 波括弧または等号による 初期化子
- nullptr
- long long
- char16_t および char32_t
- 型エイリアス
- 可変引数テンプレート
- 一般化された(非トリビアル)共用体
- 一般化されたPOD ( トリビアル型 および 標準レイアウト型 )
- Unicode文字列リテラル
- ユーザー定義リテラル
- 属性
- ラムダ式
- noexcept 指定子および noexcept 演算子
- alignof および alignas
- マルチスレッド メモリモデル
- スレッドローカルストレージ
- GCインターフェース (C++23で削除)
- 範囲ベース for (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
| このセクションは不完全です |
不具合報告
| C++11で修正された欠陥レポート (741 core, 868 library) |
|---|
タグ内のテキストも翻訳対象外のため、元の英語表記「CWG#9」をそのまま維持しています)
タグ内のテキストではないため、CWG#39は翻訳対象外となります)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
、
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
、
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
、
タグ内のテキストも翻訳対象外であるため、翻訳すべきテキストが存在しません。CWG#887はC++標準化委員会の課題番号であり、翻訳対象外の専門用語です)
タグ内のテキストではないため、CWG#957は翻訳対象外となります)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、元の英語表記「CWG#1079」をそのまま維持しています)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキスト、C++専門用語は翻訳対象外のため、元のテキストを保持しています)
タグ内のテキストも翻訳対象外のため、元の英語表記「LWG#123」をそのまま維持しています)
タグ内のテキストも翻訳対象外のため、変更箇所はありません。LWG#296はC++標準ライブラリの課題管理番号であり、専門用語として翻訳せずに維持しています)
・
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストは翻訳対象外です。LWG#455はC++標準ライブラリの課題管理番号であり、専門用語として翻訳せずに維持します)
・
タグ内のテキストも翻訳対象外のため、元のテキスト「LWG#552」は変更せずに維持しています)
、
、
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
、
タグ内のテキストも翻訳対象外のため、元のテキスト「LWG#705」は変更せずに維持しています)
・
・
・
、
・
・
タグ内のテキストも翻訳対象外のため、元のテキスト「LWG#947」は変更せずに維持されています)
・
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストは翻訳対象外のため、元のテキストを保持しています。LWG#1100はC++標準化委員会の課題番号であり、専門用語として翻訳していません)
、
・
タグ内のテキストも翻訳対象外のため、元のままとなります。LWG#1166はC++標準ライブラリの課題番号であり、専門用語として翻訳しませんでした)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストは翻訳対象外のため、元の形式を保持しています。LWG#1436はC++標準ライブラリの課題管理番号であり、専門用語として翻訳していません)
タグ内のテキスト、C++専門用語は翻訳対象外のため、原文のまま維持されています)
タグ内のテキストも翻訳対象外のため、変更箇所はありません)
タグ内のテキストも翻訳対象外のため、元の英語表記を維持しています)
、
|
コンパイラサポート
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 | 対応 |
19.0 (2015)*
(一部対応)*
19.26* |
対応 | 4.1 | 11.1 | 2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 10.1 | 5.9 | A.06.25 | 対応 | |
| static_assert ( FTM ) * | N1720 | 4.3 | 2.9 | 16.0* | はい | 4.1 | 11.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | 8.52 | |
| 右角括弧 | N1757 | 4.3 | はい | 14.0* | はい | 4.1 | 11.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 12.1 | 5.13 | |||
| 拡張 friend 宣言 | N1791 | 4.7 | 2.9 | 16.0* | はい | 4.1 |
11.1 (部分対応)
12.0 |
2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | ||
long long
|
N1811 | 対応 | 対応 | 14.0* | 対応 | 対応 | 対応 | 2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 対応 | 対応 | 対応 | 対応 | |
| auto | N1984 | 4.4 | はい | 16.0* | はい | 3.9 |
11.0
(一部)*
12.0 |
2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | ||
| 委譲コンストラクタ ( FTM ) * | N1986 | 4.7 | 3.0 | 18.0* | はい | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.28 | ||
| extern template | N1987 | 3.3 | 対応 | 12.0* | 対応 | 3.9 | 9.0 | 2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.25 | ||
| constexpr ( FTM ) * | N2235 | 4.6 | 3.1 | 19.0 (2015)* | 対応 | 4.6 |
13.0 (一部対応)
14.0 |
2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 |
12.1 (一部対応)
13.1 |
5.13 | A.06.28 | ||
char16_t
および
char32_t
(
FTM
)
*
|
N2249 | 4.4 | 2.9 | 19.0 (2015)* | 対応 | 4.4 |
12.1 (部分的)*
14.0 |
2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | A.06.27 | 8.52 | |
| type traits のコンパイラサポート。 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* | はい | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | A.06.27 | ||
| alignas | N2341 | 4.8 | 3.0 | 19.0 (2015)* | はい | 4.8 | 15.0 | 2015 | 7.0 | 8.6 | はい | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | |||
| alignof | N2341 | 4.5 | 2.9 | 19.0 (2015)* | はい | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | |||
| デフォルト化および削除された関数 | N2346 | 4.4 | 3.0 | 18.0* | はい | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1 | 5.13 | A.06.25 | ||
強く型付けされた
enum
|
N2347 | 4.4 | 2.9 |
16.0*
(部分対応)
17.0* |
対応 | 4.0 | 13.0 | 2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 12.1 | 5.13 | A.06.25 | ||
| アトミック操作 | N2427 | 4.4 | 3.1 | 17.0* | はい | はい | 13.0 | 2015 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | ||||
| nullptr | N2431 | 4.6 | 2.9 | 16.0* | はい | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1 | 5.13 | A.06.27 | 8.52 | |
| explicit 変換演算子 | N2437 | 4.5 | 3.0 | 18.0* | はい | 4.4 | 13.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 12.1 | 5.13 | A.06.27 | ||
| ref-qualifiers ( FTM ) * | N2439 | 4.8.1 | 2.9 | 19.0 (2015)* | 対応 | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
| Unicode 文字列リテラル ( FTM ) * | N2442 | 4.4 | 3.0 | 19.0 (2015)* | はい | 4.7 | 11.0* | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 |
10.1*
13.1.1* |
5.7 | A.06.28 | 8.52 | |
| 生文字列リテラル string literals ( FTM ) * | N2442 | 4.5 | はい | 18.0* | はい | 4.7 | 14.0 | 2015 | 7.0 | 8.4 | はい | 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)* | はい | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 11.1 | 5.13 | A.06.28 | ||
| 継承コンストラクタ ( FTM ) * | N2540 | 4.8 | 3.3 | 19.0 (2015)* | はい | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | |||
| 後置関数戻り値型 | N2541 | 4.4 | 2.9 | 16.0* | 対応 | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 12.1 | 5.13 | A.06.27 | ||
| 無制限 union s | N2544 | 4.6 | 3.0 | 19.0 (2015)* | はい | 4.6 | 14.0* | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
| 可変引数テンプレート ( FTM ) * |
N2242
N2555 |
4.3
(一部)*
4.4 |
2.9 | 18.0* | 対応 |
4.3
(一部)*
4.3 |
12.1 | 2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 11.1 (一部)* | 5.13 | A.06.27 | ||
| 式 SFINAE | N2634 | 4.4 | 2.9 | 19.14* | はい | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | |||||
| ローカル型および無名型のテンプレートパラメータとしての使用 | N2657 | 4.5 | 2.9 | 16.0* | 対応 | 4.2 | 12.0 | 2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.27 | ||
| スレッドローカルストレージ | N2659 |
4.4 (一部)
4.8 |
3.3* |
16.0*
(一部)
19.0 (2015)* |
対応 | 4.8 |
11.1 (一部)
15.0* |
2015 | 8.4 | 対応 | 17.1.0 | 1.1.0 |
10.1 (一部)*
13.1.2 (一部)* |
5.9 (一部) | 8.52 (一部) | |||
| 並行性を伴う動的初期化と破棄 ( マジックスタティック ) ( FTM ) * | N2660 | 4.3 | 2.9 | 19.0 (2015)* | はい | はい | 11.1* | 2015 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.25 | |||
| ガベージコレクションと到達可能性ベースのリーク検出 | N2670 | |||||||||||||||||
| 初期化リスト ( FTM ) * | N2672 | 4.4 | 3.1 | 18.0* | 対応 | 4.5 |
13.0 (部分対応)
14.0 |
2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
| 非静的データメンバ初期化子 ( FTM ) * | N2756 | 4.7 | 3.0 | 18.0* | はい | 4.6 | 14.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
属性
,
[[
noreturn
]]
(
機能テストマクロ
)
*
|
N2761 | 4.8 | 3.3 | 19.0 (2015)* | 対応 | 4.2 | 12.1 | 2015 | 7.0 | 8.4 | 対応 | 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* | はい | 4.5 |
11.1 (部分的な対応)
14.0 |
2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 12.1 | 5.13 | |||
| ユーザー定義リテラル ( FTM ) * | N2765 | 4.7 | 3.1 | 19.0 (2015)* | はい | 4.8 | 15.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |||
| 右辺値参照 ( FTM ) * |
N2118
N2844 CWG1138 |
4.3
(一部)*
4.5 |
2.9 |
16.0*
(一部)*
17.0* |
はい | 4.5 |
11.1
(一部)*
12.0 (一部)* 14.0 |
2015 | 7.0* | 8.4 | はい | 17.1.0 | 1.1.0 | 12.1 | 5.13 | A.06.25 | ||
| ラムダ式 ( FTM ) * |
N2550
N2658 N2927 |
4.5 | 3.1 |
16.0*
(一部)*
17.0* |
はい | 4.1 | 12.0 | 2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.25 | ||
| 範囲ベースforループ ( FTM ) * |
N2930
N3271 |
4.6 | 3.0 | 17.0* | 対応 | 4.5 | 13.0 | 2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 13.1.2* | 5.13 | A.06.28 | ||
| noexcept | N3050 | 4.6 | 3.0 | 19.0 (2015)* | 対応 | 4.5 | 14.0 | 2015 | 7.0 | 8.4 | 対応 | 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*
(一部)
17.0* |
対応 | 4.8 |
12.0
(一部)*
14.0 |
2015 | 7.0 | 8.4 | 対応 | 17.1.0 | 1.1.0 | 13.1.1* | 5.13 | |||
| decltype ( 機能テストマクロ ) * |
N2343
N3276 |
4.3
(一部)*
4.8.1 |
2.9 |
16.0*
(一部)*
17.0* |
はい |
4.2
(一部)*
4.8 |
11.0
(一部)*
12.0 |
2015 | 7.0 | 8.4 | はい | 17.1.0 | 1.1.0 | 11.1 (一部)* | 5.13 | A.06.25 | 8.52 (一部)* | |
|
C++11 機能 |
論文 |
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++
|
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 (部分的)*
4.8 (部分的)* 5 |
3.0 |
14.0*
(部分的)* 19.0 (2015)* |
はい | 17.1.0 | 5.13 | はい | |
コンテナのメンバー関数
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)* |
はい
(no-op)* |
17.1.0 | |||
| マネー、タイム、およびhexfloat I/Oマニピュレータ |
N2071
N2072 |
5 | 3.8 | 19.0 (2015)* | はい | 17.1.0 | 5.15 | ||
| COW (copy-on-write) の禁止 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*
|
*
- 星印が付いたセルにマウスを重ねると
*
追加のポップアップ注釈が表示されます。
DR
nn
- 「DR」に続く数字
nn
は欠陥報告書が適用される対象C++リビジョンを示します(例:DR20 → C++20)。
外部リンク
| 1. | C++11 - Wikipedia |
| 2. | 動作するC++11の例 |