注意! この表は、主に製品を作成する人を対象としています。 ライブラリを開発している場合は、もちろん、プライマリソースのサポート機能に精通することをお勧めします(または、すべてのテストを記述することをお勧めします)。 私にとって、それは主に「ああ! 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")に変更します。 ブックマークにトピックを持っている人は誰でも、情報が更新されたことを知っています。