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 |