注意! この表は、主に製品を作成する人を対象としています。 ライブラリを開発している場合は、もちろん、プライマリソースのサポート機能に精通することをお勧めします(または、すべてのテストを記述することをお勧めします)。 私にとって、それは主に「ああ! Range-forは既に問題なく使用できます。
標準の一部 | C ++ 11の提案 | クラン | Gcc | Vc | Intel C ++ |
---|---|---|---|---|---|
C ++ 11 | |||||
右辺値参照 | N2118 | 2.9 | 4.3 | 10.0-13.0 | 12.0 |
* thisの右辺値参照 | N2439 | 2.9 | 4.8.1 | 13.0 | 14.0 |
右辺値によるクラスオブジェクトの初期化 | N1610 | 2.9 | 4.0 | 11.1 | |
非静的データメンバー初期化子 | N2756 | 3.0 | 4.7 | 12.0-? | 14.0 |
可変長テンプレート | N2242 | 2.9 | 4.3 | 11.1 | 12.0 |
可変長テンプレートテンプレートパラメータの拡張 | N2555 | 2.9 | 4.4 | 12.0 | 12.0 |
初期化子リスト | N2672 | 3.1 | 4.4 | 11.1-? | 13.0 |
静的アサーション | N1720 | 2.9 | 4.3 | 10.0 | 11.0 |
自動入力された変数 | N1984 | 2.9 | 4.4 | 10.0 | 11.0 |
マルチ宣言子自動 | N1737 | 2.9 | 4.4 | 10.0 | 12.0 |
ストレージクラス指定子としてのautoの削除 | N2546 | 2.9 | 4.4 | 10.0 | 11.0 |
新しい関数宣言子の構文 | N2541 | 2.9 | 4.4 | 10.0 | 12.1 |
ラムダ式 | N2927 | 3.1 | 4.5 | 10.0-11.0 | 12.0 |
式の宣言されたタイプ | N2343 | 2.9 | 4.3 | 10.0-11.0 | 11.0 |
不完全な戻り型 | N3276 | 3.1 | 4.8.1 | 12.0 | 12.0 |
直角ブラケット | N1757 | 2.9 | 4.3 | 10.0 | 11.0 |
関数テンプレートのデフォルトのテンプレート引数 | DR226 | 2.9 | 4.3 | 12.0 | 12.6 |
式のSFINAE問題を解決する | DR339 | 2.9 | 4.4 | 12.6 | |
エイリアステンプレート | N2258 | 3.0 | 4.7 | 12.0 | 12.6 |
外部テンプレート | N1987 | 2.9 | 4.0 | 10.0 | 9.0 |
ヌルポインター定数 | N2431 | 3.0 | 4.6 | 10.0 | 12.1 * |
厳密に型指定された列挙型 | N2347 | 2.9 | 4.4 | 10.0-11.0 | 12.0 |
列挙型の前方宣言 | N2764 DR1206 | 3.1 | 4.6 | 11.0 | 14.0 |
標準化された属性構文 | N2761 | 3.3 * | 4.8 | 12.1 | |
一般化された定数式 | N2235 | 3.1 | 4.6 | 13.0-? | 13.0 |
アライメントのサポート | N2341 | 3.3 | 4.8 | 10.0-13.0 | 15.0 |
条件付きサポート動作 | N1627 | 2.9 | |||
未定義の動作を診断可能なエラーに変更する | N1727 | 2.9 | |||
コンストラクターの委任 | N1986 | 3.0 | 4.7 | 12.0 | 14.0 |
コンストラクターの継承 | N2540 | 3.3 | 4.8 | 13.0 | 15.0 |
明示的な変換演算子 | N2437 | 3.0 | 4.5 | 11.1 | 13.0 |
新しいキャラクタータイプ | N2249 | 2.9 | 4.4 | 13.0 | 14.0 |
Unicode文字列リテラル | N2442 | 3.0 | 4.5 | 13.0 | 11.0 * |
生の文字列リテラル | N2442 | 3.0 | 4.5 | 11.1 | 14.0 |
リテラル内のユニバーサルキャラクター名 | N2170 | 3.1 | 4.5 | 12.6 | |
ユーザー定義のリテラル | N2765 | 3.1 | 4.7 | 13.0 | 15.0 |
標準レイアウトタイプ | N2342 | 3.0 | 4.4 | 11.0 | 14.0 |
デフォルトの機能 | N2346 | 3.0 | 4.4 | 12.0 | 12.0 |
削除された機能 | N2346 | 2.9 | 4.4 | 12.0 | 12.0 |
拡張フレンド宣言 | N1791 | 2.9 | 4.7 | 10.0 | 11.0 |
sizeofの拡張 | N2253 DR850 | 3.1 | 4.4 | 13.0 | 14.0 |
インライン名前空間 | N2535 | 2.9 | 4.4 | 13.0 | 14.0 |
無制限の組合 | N2544 | 3.1 | 4.6 | 13.0 | 14.0 * |
テンプレート引数としてのローカルおよび名前のないタイプ | N2657 | 2.9 | 4.5 | 10.0 | 12.0 |
範囲ベース | N2930 | 3.0 | 4.6 | 11.0 | 13.0 |
明示的な仮想オーバーライド | N2928 N3206 N3272 | 3.0 | 4.7 | 10.0-11.0 | 12.0 * |
ガベージコレクションの最小限のサポート
および到達可能性ベースのリーク検出 | N2670 | N / a | N / a | 10.0 | 15.0 * |
移動コンストラクターがスローできるようにする[noexcept] | N3050 | 3.0 | 4.6 | 13.0 | 14.0 |
特殊メンバー移動関数の定義 | N3053 | 3.0 | 4.6 | 14.0 | |
C ++ 11-並行性 | |||||
シーケンスポイント | N2239 | 3.3 | 4.0 | N / a | 15.0 |
原子操作 | N2427 | 3.1 | 4.4 | 11.0 | 13.0 |
強力な比較と交換 | N2748 | 3.1 * | 4.5 | 11.0 | 13.0 |
双方向フェンス | N2752 | 3.1 | 4.8 | 11.0 | 13.0 |
メモリモデル | N2429 | 3.2 | 4.8 | N / a | 15.0 * |
データ依存の順序付け:アトミックおよびメモリモデル | N2664 | 3.2 * | 4.4 | 11.0-? | 15.0 |
例外の伝播 | N2179 | 2.9 | 4.4 | 10.0 | 12.0 |
プロセスの放棄とat_quick_exit | N2440 | 4.8 | 13.0 | 15.0 * | |
シグナルハンドラーでアトミックの使用を許可する | N2547 | 3.1 | 4.0 | 15.0 * | |
スレッドローカルストレージ | N2659 | 3.3 | 4.8 | 10.0-13.0 | 15.0 * |
同時実行による動的な初期化と破棄 | N2660 | 2.9 | 4.3 | 13.0 | 11.0 * |
C ++ 11のC99機能 | |||||
__func__事前定義識別子 | N2340 | 2.9 | 4.3 | 10.0-13.0 | 11.0 |
C99プリプロセッサ | N1653 | 2.9 | 4.3 | 10.0-? | 11.1 |
長い長い | N1811 | 2.9 | 4.3 | 10.0 | 9.0 |
拡張整数型 | N1988 | N / a | 4.0 | N / a | 15.0 * |
C ++ 14 | |||||
特定のC ++コンテキスト変換の微調整 | N3323 | 3.4 | 4.9 | 12.0 | |
バイナリリテラル | N3472 | 2.9 | 4.9 | 13.0 | 11.0 |
decltype(自動) | N3638 | 3.3 | 4.8 | 13.0 | 15.0 |
通常の関数の戻り型の推論 | 3.4 | 4.9 | 13.0 | ||
初期化されたラムダキャプチャ | N3648 | 3.4 | 4.9 | 13.0 | 15.0 |
汎用ラムダ | N3649 | 3.4 | 4.9 | 13.0 | |
可変テンプレート | N3651 | 3.4 | 5.0 | ||
constexpr関数の要件を緩和する | N3652 | 3.4 | 5.0 | ||
メンバー初期化子と集計 | N3653 | 3.3 | 5.0 | ||
メモリ割り当ての明確化 | N3664 | 3.4 | N / a | ||
[[非推奨]]属性 | N3760 | 3.4 | 4.9 | 15.0 * | |
桁区切り記号としての単一引用符 | N3781 | 3.4 | 4.9 | 13.0 | |
C ++サイズの割り当て解除 | N3778 | 3.4 | いや | 13.0 | |
C ++ 1z | |||||
メッセージなしのstatic_assert | N3928 | 3.5 | |||
デフォルトでトライグラフ展開を無効にする | N4086 | 3.5 | 13.0 | ||
テンプレートテンプレートパラメーターのtypename | N4051 | 3.5 | 5.0 | ||
直接リスト初期化の新しい自動ルール | N3922 | いや | |||
折り畳み式 | N4295 | SVN | |||
u8文字リテラル | N4267 | SVN | |||
ネストされた名前空間の定義 | N4230 | SVN | |||
名前空間と列挙子の属性 | N4266 | SVN | |||
すべての非型テンプレート引数の定数評価を許可します | N4268 | SVN | |||
下書き | |||||
SD-6:SG10機能テストの推奨事項 | SD-6 | 3.4 | 5.0 | ||
SVN | |||||
[DRAFT TS]配列拡張(バインドされたランタイムの配列) | N3820 | いや | 4.9 | ||
[ドラフトTS]ライブラリの基礎(呼び出しタイプの特性) | N3908 | いや | |||
[ドラフトTS]コンセプト | N3929 | いや | はい** |
- テーブルは不正確な場合があります。ほとんどの場合、手動で作成されたためです。
- 標準ライブラリの機能のサポートは示されていません(緊急のリクエストに応じて追加します)。
- *ニュアンスがあることを意味します(ただし、完全にサポートされています)。 たとえば、コマンドラインオプション-ソースを読み取ります。
- いいえ-この機能はまだサポートされていません。
- N / A-サポートする能力は不可能であるか、まったく計画されていません
- MSVCの場合、部分サポートと完全サポートの2つのバージョンがある場合、範囲が示されます。 完全サポートがまだ発表されていない場合、範囲の後の2番目の値は疑問符です。
- ** GCC Concepts Liteブランチ。
参照資料
- CLang C ++ 11/14/17
- GCC: C ++ 11テーブル、 C ++ 14テーブル、 GCC 5に追加される機能強化のリスト
- 2012年に関連する、 Scott Meyersからのリンクのリスト
- MSVS 2013 C ++ 11 、 C ++ 14
- Intel C ++ 11
- 遅れて発見-多くの異なるコンパイラーをサポートするテーブル (同一の英語版 )、リストのみが不完全です(80のうち40がここに表示されています)。
さらに読む:
- 効果的なモダンC ++:C ++ 11およびC ++ 14の使用を改善する42の特定の方法 (出版社へのリンク)。 スコット・マイヤーズ-効果的なモダンC ++(C ++ 11/14)
- C ++のツアー -Bjarne Stroustrup
PSそして、もちろん、あるコンパイラーが他のコンパイラーより優れているという結論を下す価値はありません。 表に示されているそれぞれには、独自のキラー機能とアプリケーションがあります。 ただし、深刻なプロジェクトでは、コンパイラは「構文バン」の数だけで考慮されることはありません(誇張)。 合理的である!
UPD :調査の結果から判断すると(予想どおり)、ほとんどの人はSTL情報が必要であると考えています。 この質問を少し研究した結果、同様の比較を行うのに1〜2時間もかからないことがわかりました。 ですから、私の手が届くならそれをします。その場合は、タイトルを( "... and STL")に変更します。 ブックマークにトピックを持っている人は誰でも、情報が更新されたことを知っています。