Modern C++ 言語機能の準拠状況
Modern C++ への移動
以下は、RAD Studio C++ コンパイラでサポートされる Modern C++ 機能の一覧です。
C++17 の機能
機能 | C++17 提案書 | BCC32C/X | BCC64 |
---|---|---|---|
ダイレクト リスト初期化のための新しい自動ルール | N3922 | ![]() |
![]() |
メッセージなしの static_assert | N3928 | ![]() |
![]() |
テンプレート テンプレート パラメータでの typename | N4051 | ![]() |
![]() |
トライグラフの削除 | N4086 | ![]() |
![]() |
入れ子ネームスペース定義 | N4230 | ![]() |
![]() |
ネームスペースと列挙型のための属性 | N4266 | ![]() |
![]() |
u8 文字リテラル | N4267 | ![]() |
![]() |
すべての非型テンプレート引数に対して定数評価を可能にする | N4268 | ![]() |
![]() |
折り畳み式 | N4295 | ![]() |
![]() |
登録キーワードの非推奨使用の削除 | P0001R1 | ![]() |
![]() |
非推奨演算子 ++(bool) | P0002R1 | ![]() |
![]() |
C++17 からの非推奨例外仕様 | P0003R5 | ![]() |
![]() |
例外仕様を型システムの一部にする | P0012R1 | ![]() |
![]() |
基本クラスを持つクラスの集約初期化 | P0017R1 | ![]() |
![]() |
*this のラムダ キャプチャ | P0018R3 | ![]() |
![]() |
繰り返しなしの属性ネームスペースの使用 | P0028R4 | ![]() |
![]() |
オーバー アラインされたデータの動的メモリ割り当て | P0035R4 | ![]() |
![]() |
単項 fold 式と空のパラメータ パック | P0036R0 | ![]() |
![]() |
プリプロセッサ条件での __has_include | P0061R1 | ![]() |
![]() |
クラス テンプレートのテンプレート引数の軽減 | P0091R3 | ![]() |
![]() |
auto 型での非型テンプレート パラメータ | P0127R2 | ![]() |
![]() |
コピー省略の保証 | P0135R1 | ![]() |
![]() |
コンストラクタ継承の新しい仕様(DR1941 など) | P0136R1 | ![]() |
![]() |
参照メンバーを持つクラス オブジェクトの置換 | P0137R1 | ||
列挙型の直接リスト初期化 | P0138R2 | ![]() |
![]() |
より厳しい式の評価順序 | P0145R3 | ![]() |
![]() |
constexpr ラムダ式 | P0170R1 | ![]() |
![]() |
範囲ベース付きの for での begin および end の型の違い | P0184R0 | ![]() |
![]() |
[[fallthrough]] 属性 | P0188R1 | ![]() |
![]() |
[[nodiscard]] 属性 | P0189R1 | ![]() |
![]() |
using-declarations のパック拡張 | P0195R2 | ![]() |
![]() |
[[maybe_unused]] 属性 | P0212R1 | ![]() |
![]() |
構造型バインディング | P0217R3 | ![]() |
![]() |
16 進数の浮動小数点リテラル | P0245R1 | ![]() |
![]() |
不明な属性の無視 | P0283R2 | ![]() |
![]() |
constexpr if 文 | P0292R2 | ![]() |
![]() |
if および switch のための初期化文 | P0305R1 | ![]() |
![]() |
インライン変数 | P0386R2 | ![]() |
![]() |
DR: DR: テンプレート テンプレート引数のマッチングが互換性のあるテンプレートを除外する | P0522R0 | ![]() |
![]() |
std::uncaught_exceptions() | N4259 | ![]() |
![]() |
std::pair と std::tuple の向上 | N4387 | ![]() |
![]() |
std::any | P0220R1 | ![]() |
![]() |
std::variant | P0088R3 | ![]() |
![]() |
std::optional | P0220R1 | ![]() |
![]() |
std::shared_mutex (タイムアウトなし) | N4508 | ![]() |
![]() |
std::string_view | N3921 | ![]() |
![]() |
Parallelism TS の標準化 | P0024R2 | ||
基本的な文字列変換 | P0067R5 | ||
数学の特殊関数 | P0226R1 | ![]() |
![]() |
map と set のスプライシング | P0083R3 | ||
ハードウェア干渉サイズ | P0154R1 | ||
std::filesystem | P0218R1 | ![]() |
![]() |
std::byte | P0298R3 | ![]() |
![]() |
C++14 の機能
機能 | C++14 提案書 | BCC32C/X | BCC64 |
---|---|---|---|
文脈変換の微妙な表現 | N3323 | ![]() |
![]() |
バイナリ リテラル | N3472 | ![]() |
![]() |
decltype(auto)、通常関数に対する戻り値型の軽減 | N3638 | ![]() |
![]() |
初期化/汎用化ラムダ キャプチャ(初期化キャプチャ) | N3648 | ![]() |
![]() |
汎用(多態)ラムダ式 | N3649 | ![]() |
![]() |
変数テンプレート | N3651 | ![]() |
![]() |
拡張 constexpr | N3652 | ![]() |
![]() |
メンバー初期化子と集約 (NSDMI) | N3653 | ![]() |
![]() |
メモリ割り当ての明確化(割り当ての回避/融合) | N3664 | ![]() |
![]() |
[[deprecated]] 属性 | N3760 | ![]() |
![]() |
サイズ付き割り当て解放 | N3768 | ![]() |
![]() |
数値区切りとしての単一引用符 | N3781 | ![]() |
![]() |
std::result_of と SFINAE | N3462 | ![]() |
![]() |
<complex> の constexpr | N3302 | ![]() |
![]() |
<chrono> の constexpr | N3469 | ![]() |
![]() |
<array> の constexpr | N3470 | ![]() |
![]() |
<initializer_list>、<utility>、<tuple> の constexpr | N3471 | ![]() |
![]() |
改善された std::integral_constant | N3545 | ![]() |
![]() |
<chrono> と <string> のユーザー定義リテラル | N3642 | ![]() |
![]() |
Null の前方イテレータ | N3644 | ![]() |
![]() |
std::quoted | N3654 | ![]() |
![]() |
異種混合ルックアップ | N3657 | ![]() |
![]() |
std::integer_sequence | N3658 | ![]() |
![]() |
std::shared_timed_mutex | N3659 | ![]() |
![]() |
std::exchange | N3668 | ![]() |
![]() |
const なしでの constexpr メンバー関数の固定 | N3669 | ![]() |
![]() |
std::get<T>() | N3670 | ![]() |
![]() |
2重範囲の std::equal、std::is_permutation、std::mismatch | N3671 | ![]() |
![]() |
C++11 機能
機能 | C++11 提案書 |
BCC32C/X | BCC32 | BCC64 | BCCOSX | BCCIOSARM | BCCIOSARM64 | BCCAARM |
---|---|---|---|---|---|---|---|---|
右辺値参照 | N2118 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
*this の右辺値参照
|
N2439 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
右辺値によるクラス オブジェクトの初期化 | N1610 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
非静的データ メンバ初期化子 | N2756 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
可変個引数テンプレート | N2242 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
可変個引数テンプレートのテンプレート パラメータの拡張 | N2555 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
初期化リスト | N2672 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
静的アサーション | N1720 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
auto 型変数
|
N1984 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
多重宣言子 auto
|
N1737 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
記憶クラス指定子としての auto の削除 | N2546 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
関数宣言子の新しい構文 | N2541 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
ラムダ式 | N2927 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
式の宣言された型 | N2343 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
不完全な戻り値型 | N3276 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
右山かっこ | N1757 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
関数テンプレートのデフォルト テンプレート引数 | DR226 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
式の SFINAE 問題の解決 | DR339 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
エイリアス テンプレート | N2258 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
extern テンプレート | N1987 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
null ポインタ定数 | N2431 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
厳密に型指定された列挙型 | N2347 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
列挙型の前方宣言 | N2764 DR1206 |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
標準属性の構文 | N2761 | ![]() |
||||||
一般化された定数式 | N2235 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
アラインメント サポート | N2341 | ![]() |
||||||
条件付きサポート動作 | N1627 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
未定義の動作を診断可能なエラーに変換 | N1727 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
委譲コンストラクタ | N1986 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
コンストラクタの継承 | N2540 | ![]() |
||||||
明示的な変換演算子 | N2437 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
新しい文字型 | N2249 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Unicode 文字列リテラル | N2442 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
生の文字列リテラル | N2442 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
リテラル内の汎用文字名 | N2170 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
ユーザー定義リテラル | N2765 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
標準レイアウト型 | N2342 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
デフォルト定義関数 | N2346 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
削除済み関数 | N2346 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
拡張フレンド宣言 | N1791 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
sizeof の拡張
|
N2253 DR850 |
![]() |
![]() |
![]() |
![]() |
![]() | ||
インライン名前空間 | N2535 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
無制限共用体 | N2544 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
テンプレート引数としてのローカル型および無名型 | N2657 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
範囲ベースの for | N2930 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
明示的な仮想オーバーライド | N2928 N3206 N3272 |
![]() |
![]() |
![]() |
![]() |
![]() | ||
ガベージ コレクションと到達可能性ベースのリーク検出の最低限サポート | N2670 | |||||||
移動コンストラクタで例外を送出可能 [noexcept] | N3050 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
移動用の特殊なメンバ関数の定義 | N3053 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
同時実行 | ||||||||
シーケンス ポイント | N2239 | ![]() |
||||||
アトミック操作 | N2427 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
厳密な比較および交換 | N2748 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
双方向フェンス | N2752 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
メモリ モデル | N2429 | ![]() |
||||||
データ依存関係の順序付け: アトミック操作とメモリ モデル | N2664 | ![]() |
||||||
例外の伝播 | N2179 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
シグナル ハンドラでアトミック操作を使用可能 | N2547 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
スレッドローカル記憶域 | N2659 | ![]() |
||||||
同時実行を考慮した動的初期化と破棄 | N2660 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
C++11 に含まれている C99 機能 | ||||||||
定義済み識別子 __func__
|
N2340 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
C99 プリプロセッサ | N1653 | ![]() |
![]() |
![]() |
![]() |
![]() | ||
long long 型
|
N1811 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
拡張整数型 | N1988 | ![]() |
![]() |
![]() |
![]() |
![]() |