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

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

この記事は、インテル® デベロッパー・ゾーンで公開されている「C++20 Features Supported by Intel® C++ Compiler」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


言語機能 標準化番号 ICC
2021.4
ICC
2021.6
(インテル®
oneAPI
2022.2)
ICX
2022.1
ICX
2022.1

(インテル®
oneAPI
2022.2)
ビット・フィールドのデフォルトのメンバー初期化子 P0683R1 (英語)
const 修飾されたメンバーポインターの修正 P0704R1 (英語)
ラムダ・キャプチャー [=, this] の許可 P0409R2 (英語)
__VA_OPT__ : プリプロセッサーのカンマの省略 P1042R1 (英語)
__VA_OPT__: カンマの省略と削除 P0306R4 (英語)
指定初期化子 P0329R4 (英語)
汎用ラムダの使いやすいテンプレート構文 P0428R2 (英語)
コンストラクター・テンプレート引数の推論 P0702R1 (英語)
コンセプト: コンセプトのための C++ 拡張 P0734R0 (英語) ×
コンセプト: 「制約条件における機能性のギャップ」の表現 P0857R0 (英語) × × 一部サポート 一部サポート
コンセプト: 不十分なリターン型要件 P1084R2 (英語) × ×
コンセプト: リターン型要件の非一様セマンティクス P1452R2 (英語) × ×
コンセプト: 制約のないテンプレート・パラメーターの制約のあるテンプレートでの使用 P1616R1 (英語) × ×
コンセプト: 非依存の requires 節の宣言マッチング P1980R0 (英語) × × × ×
コンセプト: 制約付き宣言の別のアプローチ P1141R2 (英語) × ×
コンセプト: US105 関数へのポインター作成時のテンプレート以外の制約を満たしているかの確認 P1972R0 (英語) × × × ×
コンセプト: コンセプト値の変更を許可しない P2104R0 (英語) × × × ×
コンセプト: 入れ子の条件の曖昧さの解消 P2092R0 (英語) × × 一部サポート 一部サポート
コンセプト: 制約付きテンプレートからの書き換えられた演算子候補の部分的な順序付け P2113R0 (英語) × × × ×
コンセプト: 非依存エンティティー (CA107) のパラメーター・マッピング & 型と型制約の比較 (US117) P2103R0 (英語) × × × ×
制約への置換を必要とする宣言マッチングと部分的順序付けの明確化 (CA104) P2103R0 (英語) × × × ×
テンプレートでない隠しフレンドには requires 節が必要 (US115) P2103R0 (英語) × × × ×
初期化式を伴う範囲 for 文 P0614R1 (英語) × ×
暗黙のラムダ・キャプチャーの簡素化 P0588R1 (英語)
ADL と非可視関数テンプレート P0846R0 (英語)
デフォルトのコピー・コンストラクターと非 const コンストラクターの不一致 (コア問題 1331) P0641R2 (英語)
constexpr メンバー関数定義の条件(コア問題 1581) P0859R0 (英語) × × × ×
特殊化のアクセスチェック P0692R1 (英語) ×
デフォルトの構築可能で割り当て可能なステートレス・ラムダ P0624R2 (英語)
宇宙船演算子: 三方比較演算子 P0515R3 (英語)
宇宙船演算子: 宇宙船演算子のシンメトリー P0905R1 (英語)
宇宙船演算子: <=> != == P1185R2 (英語)
宇宙船演算子: 宇宙船演算子のチューンアップの必要性 P1630R1 (英語) ×
宇宙船演算子: 比較の一貫性の向上 P1120R0 (英語) × ×
宇宙船演算子: <=> の使用法 P1186R3 (英語) ×
宇宙船演算子: std::weak_equality と std::strong_equality の削除 P1959R0 (英語) × ×
宇宙船演算子: 一貫したデフォルトの比較 P2085R0 (英語) × × ×
宇宙船演算子: デフォルト比較仕様のクリーンアップ P20002R1 (英語) × × 一部サポート 一部サポート
評価されないコンテキストでのラムダ式 P0315R4 (英語) × × 一部サポート 一部サポート
POD の非推奨化 P0767R1 (英語)
空のオブジェクトに対する言語サポート P0840R2 (英語)
範囲 for ループのカスタマイズ・ポイントの検索規則の緩和 P0962R1 (英語)
アクセス可能なメンバーへの構造化バインディングの許可 P0969R0 (英語)
構造化バインディングのカスタマイズ・ポイントの緩和 P0961R1 (英語)
「typename」のオプション化 P0634R3 (英語) × × ×
ラムダ式の初期化キャプチャー: ラムダ式の初期化キャプチャーでのパック展開を許可 P0780R2 (英語) × ×
ラムダ式の初期化キャプチャー: ラムダ式の初期化キャプチャーでのパック展開表現の解決 (CWG2378) P2095R0 (英語) × × × ×
[[likely]] と [[unlikely]] 属性 P0479R5 (英語) × ×
[=] による this の暗黙のキャプチャーを非推奨化 P0806R2 (英語) × × × ×
非型テンプレート・パラメーター: 非型テンプレート・パラメーターのクラス型 P0732R2 (英語) × × 一部サポート 一部サポート
非型テンプレート・パラメーター: 非型テンプレート・パラメーターとの不整合 P1907R1 (英語) × × 一部サポート 一部サポート
アトミック・パディング・ビット P0528R3 (英語) N/A N/A × ×
可変サイズクラスの効率的なサイズ指定 delete P0722R3 (英語) × ×
定数式での仮想関数呼び出しの許可 P1064R0 (英語)
ユーザー定義コンストラクターでの集約の禁止 P1008R1 (英語)
機能テストマクロの C++ WD への統合 P0941R2 (英語) 仕様を参照 (英語) 仕様を参照 (英語)
explicit(bool) P0892R2 (英語)
抽象クラス型のチェック P0929R2 (英語) × × × ×
コルーチン: US065: P0664R8 の子ルーチン TS 問題 24 の適用 P0664R8 (英語) × × × ×
コルーチン: コルーチン TS の C++20 ドラフトへのマージ P0912R5 (英語) 一部サポート 一部サポート
char8_t: UTF-8 文字および文字列の型 P0482R6 (英語)
constexpr 関数の try-catch ブロック P1002R1 (英語) ×
定数式での dynamic_cast および polymorphic typeid の許可 P1327R1 (英語)
即時関数 P1073R3 (英語) 一部サポート
std::is_constant_evaluated() P0595R2 (英語)
入れ子のインライン名前空間 P1094R2 (英語)
定数式でのアクティブな共用体メンバーの変更 P1330R0 (英語)
不足している機能テストマクロ P1353R0 (英語)
P0907R4 符号付き整数が 2 の補数の代替表現 P1236R1 (英語) N/A N/A
構造化バインディングの参照キャプチャー P1381R1 (英語) 一部サポート 一部サポート
構造化バインディングを変数宣言のようにする拡張 P1091R3 (英語) 一部サポート 一部サポート
char16_t/char32_t 文字列リテラルの UTF-16/32 への変換 P1041R4 (英語) N/A N/A
括弧で囲まれた値のリストから集約の初期化を許可 P0960R3 (英語) × ×
括弧付き集合体初期化の表現の修正 P1975R0 (英語) × × × ×
new 式での配列サイズの推論 P1009R2 (英語)
モジュール: モジュールのマージ P1103R3 (英語) × × 一部サポート 一部サポート
モジュール: モジュールにおける非ローカル変数の動的な初期化順序 P1874R1 (英語) × × 一部サポート 一部サポート
モジュール: US086 の解決策 P1979R0 (英語) × × × ×
モジュール: モジュールの軽微な不具合の緩和 P1766R1 (英語) × ×
モジュール: 再エクスポートのロバスト性のための再定義の制約の緩和 P1811R0 (英語) × × × ×
モジュール: ヘッダーユニットのインポートの認識には完全な処理が必要 P1703R1 (英語) × × × ×
モジュール: モジュールの依存関係の検出 P1857R3 (英語) × × × ×
モジュール: モジュール・インターフェイス外で「export import foo」を許可しない P2109R0 (英語) × × × ×
モジュール: メンバー関数の ABI 分離 (名前付きモジュールでインクラスメンバー関数定義を暗黙的にインライン展開しない) P1779R3 (英語) × × × ×
モジュール: 名前のないスコープが指定されていない列挙の複数の定義のマージ P2115R0 (英語) × × 一部サポート 一部サポート
モジュール: 翻訳ユニット・ローカル・エンティティー P1815R2 (英語) × × × ×
コア問題 1778: 明示的なデフォルト関数の例外指定 P1286R2 (英語)
添字式でのカンマ演算子の使用の非推奨化 P1161R3 (英語) ×
constexpr コンテキストでの自明なデフォルト初期化の許可 P1331R2 (英語) × ×
memory_order_consume と解放シーケンスの相互作用 P0735R1 (英語) N/A N/A
条件付きの自明な特殊メンバー関数 P0848R3 (英語) × × × ×
[[nodiscard("should have a reason")]] P1301R4 (英語) ×
enum の使用 P1099R5 (英語) × ×
CTAD: 集合体のクラス・テンプレート引数推論の表現 P1816R0 (英語) × × × ×
CTAD: 集合体の CTAD の修正 P2082R1 (英語) × × × ×
constexpr 関数内で未評価のインライン・アセンブリーを許可して constexpr 組込み関数を有効化 P1668R1 (英語) × ×
境界が不明な配列への変換の許可 P0388R4 (英語) ×
constinit キーワードの追加 P1143R2 (英語) × ×
volatile の非推奨化 P1152R4 (英語) ×
コンストラクターの [[nodiscard]] P1771R1 (英語) ×
エイリアス・テンプレートのクラス・テンプレート引数推論の表現 P1814R0 (英語) × × × ×
ローカル・オブジェクトと右辺値参照の暗黙の移動 P1825R0 (英語) ×
constexpr コンテナー P0784R7 (英語) ×
値による比較のデフォルト化を許可 P1946R0 (英語) × ×
constexpr 関数と consteval 関数間の不整合の修正 P1937R2 (英語) × × ×
将来の使用のための属性名前空間の予約 P1908R1 (英語) N/A N/A
低レベルのオブジェクト操作のための暗黙的なオブジェクト作成 P0593R6 (英語) N/A N/A

C++20 機能を有効にするには、-std=c++20 (/Qstd=c++20) コンパイラー・オプションを使用します
ICX は Clang ベースのコンパイラーです。詳細はこちら (英語) を参照してください。

関連記事:

  1. インテル® C++ コンパイラーでサポートされる C++11 の機能
  2. インテル® C++ コンパイラーでサポートされる C++14 の機能
  3. インテル® C++ コンパイラーでサポートされる C++17 の機能

製品および性能に関する情報

1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。

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