C ++サポートの要約表11/14/17

特に業界の最新および標準に従うC ++開発者として、さまざまなコンパイラーによって標準C ++ 11(および1yと1z)が完全にサポートされているかどうか疑問に思っていましたか? はい、異なるピボットテーブルがありますが、ほとんどの場合、2つのコンパイラまたは同じコンパイラの2つのバージョンの比較、またはピボットテーブルですが、すでに古い、または不完全なリストです。 一般的に、Clang、GNU C ++、MSVC、およびIntel C ++の4つのコンパイラについて、私は座って完全な表(Clang-aリストとGCCに基づく)を作成しました。
注意! この表は、主に製品を作成する人を対象としています。 ライブラリを開発している場合は、もちろん、プライマリソースのサポート機能に精通することをお勧めします(または、すべてのテストを記述することをお勧めします)。 私にとって、それは主に「ああ! Range-forは既に問題なく使用できます。
標準の一部C ++ 11の提案クランGccVcIntel C ++
C ++ 11
右辺値参照N21182.94.310.0-13.012.0
* thisの右辺値参照N24392.94.8.113.014.0
右辺値によるクラスオブジェクトの初期化N16102.94.011.1
非静的データメンバー初期化子N27563.04.712.0-?14.0
可変長テンプレートN22422.94.311.112.0
可変長テンプレートテンプレートパラメータの拡張N25552.94.412.012.0
初期化子リストN26723.14.411.1-?13.0
静的アサーションN17202.94.310.011.0
自動入力された変数N19842.94.410.011.0
マルチ宣言子自動N17372.94.410.012.0
ストレージクラス指定子としてのautoの削除N25462.94.410.011.0
新しい関数宣言子の構文N25412.94.410.012.1
ラムダ式N29273.14.510.0-11.012.0
式の宣言されたタイプN23432.94.310.0-11.011.0
不完全な戻り型N32763.14.8.112.012.0
直角ブラケットN17572.94.310.011.0
関数テンプレートのデフォルトのテンプレート引数DR2262.94.312.012.6
式のSFINAE問題を解決するDR3392.94.412.6
エイリアステンプレートN22583.04.712.012.6
外部テンプレートN19872.94.010.09.0
ヌルポインター定数N24313.04.610.012.1 *
厳密に型指定された列挙型N23472.94.410.0-11.012.0
列挙型の前方宣言N2764 DR12063.14.611.014.0
標準化された属性構文N27613.3 *4.812.1
一般化された定数式N22353.14.613.0-?13.0
アライメントのサポートN23413.34.810.0-13.015.0
条件付きサポート動作N16272.9
未定義の動作を診断可能なエラーに変更するN17272.9
コンストラクターの委任N19863.04.712.014.0
コンストラクターの継承N25403.34.813.015.0
明示的な変換演算子N24373.04.511.113.0
新しいキャラクタータイプN22492.94.413.014.0
Unicode文字列リテラルN24423.04.513.011.0 *
生の文字列リテラルN24423.04.511.114.0
リテラル内のユニバーサルキャラクター名N21703.14.512.6
ユーザー定義のリテラルN27653.14.713.015.0
標準レイアウトタイプN23423.04.411.014.0
デフォルトの機能N23463.04.412.012.0
削除された機能N23462.94.412.012.0
拡張フレンド宣言N17912.94.710.011.0
sizeofの拡張N2253 DR8503.14.413.014.0
インライン名前空間N25352.94.413.014.0
無制限の組合N25443.14.613.014.0 *
テンプレート引数としてのローカルおよび名前のないタイプN26572.94.510.012.0
範囲ベースN29303.04.611.013.0
明示的な仮想オーバーライドN2928 N3206 N32723.04.710.0-11.012.0 *
ガベージコレクションの最小限のサポート
および到達可能性ベースのリーク検出
N2670N / aN / a10.015.0 *
移動コンストラクターがスローできるようにする[noexcept]N30503.04.613.014.0
特殊メンバー移動関数の定義N30533.04.614.0
C ++ 11-並行性
シーケンスポイントN22393.34.0N / a15.0
原子操作N24273.14.411.013.0
強力な比較と交換N27483.1 *4.511.013.0
双方向フェンスN27523.14.811.013.0
メモリモデルN24293.24.8N / a15.0 *
データ依存の順序付け:アトミックおよびメモリモデルN26643.2 *4.411.0-?15.0
例外の伝播N21792.94.410.012.0
プロセスの放棄とat_quick_exitN24404.813.015.0 *
シグナルハンドラーでアトミックの使用を許可するN25473.14.015.0 *
スレッドローカルストレージN26593.34.810.0-13.015.0 *
同時実行による動的な初期化と破棄N26602.94.313.011.0 *
C ++ 11のC99機能
__func__事前定義識別子N23402.94.310.0-13.011.0
C99プリプロセッサN16532.94.310.0-?11.1
長い長いN18112.94.310.09.0
拡張整数型N1988N / a4.0N / a15.0 *
C ++ 14
特定のC ++コンテキスト変換の微調整N33233.44.912.0
バイナリリテラルN34722.94.913.011.0
decltype(自動)N36383.34.813.015.0
通常の関数の戻り型の推論3.44.913.0
初期化されたラムダキャプチャN36483.44.913.015.0
汎用ラムダN36493.44.913.0
可変テンプレートN36513.45.0
constexpr関数の要件を緩和するN36523.45.0
メンバー初期化子と集計N36533.35.0
メモリ割り当ての明確化N36643.4N / a
[[非推奨]]属性N37603.44.915.0 *
桁区切り記号としての単一引用符N37813.44.913.0
C ++サイズの割り当て解除N37783.4いや13.0
C ++ 1z
メッセージなしのstatic_assertN39283.5
デフォルトでトライグラフ展開を無効にするN40863.513.0
テンプレートテンプレートパラメーターのtypenameN40513.55.0
直接リスト初期化の新しい自動ルールN3922いや
折り畳み式N4295SVN
u8文字リテラルN4267SVN
ネストされた名前空間の定義N4230SVN
名前空間と列挙子の属性N4266SVN
すべての非型テンプレート引数の定数評価を許可しますN4268SVN
下書き
SD-6:SG10機能テストの推奨事項SD-63.45.0
SVN
[DRAFT TS]配列拡張(バインドされたランタイムの配列)N3820いや4.9
[ドラフトTS]ライブラリの基礎(呼び出しタイプの特性)N3908いや
[ドラフトTS]コンセプトN3929いやはい**
注。
参照資料
  1. CLang C ++ 11/14/17
  2. GCC: C ++ 11テーブル、 C ++ 14テーブル、 GCC 5に追加される機能強化のリスト
  3. 2012年に関連する、 Scott Meyersからのリンクのリスト
  4. MSVS 2013 C ++ 11C ++ 14
  5. Intel C ++ 11
  6. 遅れて発見-多くの異なるコンパイラーをサポートするテーブル (同一の英語版 )、リストのみが不完全です(80のうち40がここに表示されています)。

さらに読む:
  1. 効果的なモダンC ++:C ++ 11およびC ++ 14の使用を改善する42の特定の方法 (出版社へのリンク)。 スコット・マイヤーズ-効果的なモダンC ++(C ++ 11/14)
  2. C ++のツアー -Bjarne Stroustrup


PSそして、もちろん、あるコンパイラーが他のコンパイラーより優れているという結論を下す価値はありません。 表に示されているそれぞれには、独自のキラー機能とアプリケーションがあります。 ただし、深刻なプロジェクトでは、コンパイラは「構文バン」の数だけで考慮されることはありません(誇張)。 合理的である!

UPD :調査の結果から判断すると(予想どおり)、ほとんどの人はSTL情報が必要であると考えています。 この質問を少し研究した結果、同様の比較を行うのに1〜2時間もかからないことがわかりました。 ですから、私の手が届くならそれをします。その場合は、タイトルを( "... and STL")に変更します。 ブックマークにトピックを持っている人は誰でも、情報が更新されたことを知っています。


Source: https://habr.com/ru/post/J245175/


All Articles