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

インテル® DPC++/C++ コンパイラー

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


標準化# 言語機能 V11.0-16.0 V17.0 V18.0 V19.0 V19.1.0
N3928 (英語) メッセージなしの static_assert
(static_assert with no message)
No No Yes Yes Yes
N4086 (英語) デフォルトでトライグラフ拡張を無効化
(Disabling trigraph expansion by default)
No No No No No
N4051 (英語) テンプレート・テンプレート引数の typename
(typename in a template template parameter)
No Yes Yes Yes Yes
N3922 (英語) 直接初期化の新しい auto 規則
(New auto rules for direct-list-initialization)
No Yes Yes Yes Yes
N4295 (英語) 畳み込み式
(Fold expressions)
No No No Yes Yes
N4267 (英語) UTF8 文字リテラル
(u8 character literals)
No Yes Yes Yes Yes
N4230 (英語) 入れ子になった namespace の定義
(Nested namespace definition)
No Yes Yes Yes Yes
N4266 (英語) 名前空間と列挙子の属性
(Attributes for namespaces and enumerators)
No Yes Yes Yes Yes
N4268 (英語) すべての非型テンプレート・パラメーターの定数評価
(Allow constant evaluation for all non-type template arguments)
No No No No Yes
P0001R1 (英語) 非推奨であった register ストレージクラスを削除
(Remove deprecated register storage class)
No No Yes Yes Yes
P0002R1 (英語) 非推奨であった bool 型のインクリメントを削除
(Remove deprecated bool increment)
No No Yes Yes Yes
P0012R1 (英語) 例外仕様を型システムの一部にする
(Make exception specifications part of the type system)
No No Yes Yes Yes
P0061R1 (英語) プリプロセッサー条件の __has_include
(__has_include in preprocessor conditionals)
No No Yes Yes Yes
P0188R1 (英語) [[fallthrough]] 属性
([[fallthrough]] attribute)
No No Yes Yes Yes
P0189R1 (英語) [[nodiscard]] 属性
([[nodiscard]] attribute)
No No Yes Yes Yes
P0212R1 (英語) [[maybe_unused]] 属性
([[maybe_unused]] attribute)
No No Yes Yes Yes
P0184R0 (英語) 範囲指定ベースのループ
(Generalizing the Range-Based For Loop)
No No Yes Yes Yes
P0138R2 (英語) 列挙型の直接リスト初期化
(Direct-list-initialization of enums)
No No Yes Yes Yes
P0245R1 (英語) 16 進浮動小数点リテラル
(Hexadecimal floating-point literals)
No No Yes Yes Yes
P0028R4 (英語) 繰り返しなしの名前空間属性の使用
(Using attribute namespaces without repetition)
No No Yes Yes Yes
P0283R2 (英語) 不明な属性の無視
(Requirement to ignore unknown attributes)
No No Yes Yes Yes
P0217R3 (英語) 構造体のバインド
(Structured bindings)
No No Yes Yes Yes
P0305R1 (英語) if 文と switch 文の変数と条件を分離
(Separate variable and condition for if and switch)
No No Yes Yes Yes
P0386R2 (英語) インライン変数
(Inline Variable)
No No No Yes Yes
P0138R2 (英語) 列挙型クラスの構文規則
(Construction rules for enum classes)
No No No Yes Yes
P0003R5 (英語) 廃止予定の動的例外仕様の削除
(Removing deprecated dynamic exception specifications)
No No No Yes Yes
P0170R1 (英語) constexpr ラムダ式
(constexpr lambda expressions)
No No No Yes Yes
P0018R3 (英語) *this のラムダキャプチャー
(Lambda capture of *this)
No No No Yes Yes
P0292R2 (英語) if constexpr 文
(constexpr if-statements)
No No No Yes Yes
P0522R0 (英語) テンプレート・パラメーターと互換性のある引数のマッチング
(Matching template parameters to compatible arguments)
No No No No Yes
P0145R3 (英語) 式の評価順序の調整
(Stricter expression evaluation order)
No No No No Yes
P0135R1 (英語) コピー省略保証
(Guaranteed copy elision)
No No No No Yes
P0127R2 (英語) auto による非型テンプレート・パラメーター宣言
(Non-type template parameters with auto type)
No No No No Yes
P0091R3 (英語) クラス・テンプレートのテンプレート引数の推論
(Template argument deduction for class templates)
No No No No Yes
P0017R1 (英語) 基本クラスを持つクラスの集約初期化
(Aggregate initialization of classes with base classes)
No No No No Yes
P0136R1 (英語) コンストラクター継承の新仕様
(New specification for inheriting constructors (DR1941 et al))
No No No No No
P0195R2 (英語) using 宣言のパック展開
(Pack expansions in using-declarations)
No No No Yes Yes
P0091R3 (英語) クラス・テンプレートのテンプレート引数推論
(Template argument deduction for class templates)
No No No No Yes
P0035R4 (英語) コンストラクター継承の新仕様
(アライメント指定されたデータの動的メモリー割り当て)
No No No Yes 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++ 規格サポート: https://docs.microsoft.com/ja-jp/cpp/visual-cpp-language-conformance
  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/

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

タイトルとURLをコピーしました