インテル® C++ コンパイラーでサポートされる C++17 の機能

同カテゴリーの次の記事

インテル® Cilk™ Plus アプリケーションを OpenMP* もしくはインテル® TBB へ移行する

この記事は、インテル® デベロッパー・ゾーンに掲載されている「C++17 Features Supported by Intel® C++ Compiler」の日本語参考訳です。


標準化# 言語機能 V11.0-16.0 V17.0 V18.0
N3994 範囲ベースの for ループ
(range-based for-Loops)
No No Yes
N3928 メッセージなしの static_assert
(static_assert with no message)
No No Yes
N4086 デフォルトでトライグラフ拡張を無効化
(Disabling trigraph expansion by default)
No No No
N4051 テンプレート・テンプレート引数の typename
(typename in a template template parameter)
No Yes Yes
N3922 直接初期化の新しい auto 規則
(New auto rules for direct-list-initialization)
No Yes Yes
N4295 畳み込み式
(Fold expressions)
No No No
N4267 UTF8 文字リテラル
(u8 character literals)
No Yes Yes
N4230 入れ子になった namespace の定義
(Nested namespace definition)
No Yes Yes
N4266 名前空間と列挙子の属性
(Attributes for namespaces and enumerators)
No Yes Yes
N4268 すべての非型テンプレート・パラメーターの定数評価
(Allow constant evaluation for all non-type template arguments)
No No No
P0001R1 非推奨であった register ストレージクラスを削除
(Remove deprecated register storage class)
No No Yes
P0002R1 非推奨であった bool 型のインクリメントを削除
(Remove deprecated bool increment)
No No Yes
P0061R1 プリプロセッサー条件の __has_include
(__has_include in preprocessor conditionals)
No No Yes
P0188R1 [[fallthrough]] 属性
([[fallthrough]] attribute)
No No Yes
P0189R1 [[nodiscard]] 属性
([[nodiscard]] attribute)
No No Yes
P0212R1 [[maybe_unused]] 属性
([[maybe_unused]] attribute)
No No Yes
P0184R0 範囲指定ベースのループ
(Generalizing the Range-Based For Loop)
No No Yes
P0138R2 列挙型の直接リスト初期化
(Direct-list-initialization of enums)
No No Yes
P0245R1 16 進浮動小数点リテラル
(Hexadecimal floating-point literals)
No No Yes
P0028R4 繰り返しなしの名前空間属性の使用
(Using attribute namespaces without repetition)
No No Yes
P0283R2 不明な属性の無視
(Requirement to ignore unknown attributes)
No No Yes
P0217R3 構造体のバインド
(Structured bindings)
No No Yes
P0305R1 if 文と switch 文の変数と条件を分離
(Separate variable and condition for if and switch)
No No Yes

C++17 の機能を有効にするには、/Qstd=c++17 (Windows*)、-std=c++17 (Linux* および macOS*) オプションを使用します。

その他の関連記事:

  1. Clang C++ の規格サポート: http://clang.llvm.org/cxx_status.html (英語)
  2. Microsoft* Visual Studio* コンパイラーの C++ 規格サポート: http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx (英語)
  3. インテル® コンパイラー の C++11 サポート状況: https://www.isus.jp/products/c-compilers/c0x-features-supported-by-intel-c-compiler/
  4. インテル® コンパイラー の C++14 サポート状況: https://www.isus.jp/products/c-compilers/c14-features-supported-by-intel-c-compiler/

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事