問題タブ [c++20]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2449 参照

c++ - ユニオンはできるのに、std::variant が配列オブジェクト型を保持できないのはなぜですか?

union以下は簡単な例です。次のように低レベルを定義できます。

しかし、このように宣言することはできませんstd::variant(構文については気にしないでください。間違っている場合は訂正してください!、アイデアをつかんでください)

cppReferenceは、次のことを明確に述べています。

テンプレート パラメータ

タイプ - このバリアントに格納できるタイプ。すべての型は (おそらく cv 修飾された) 非配列オブジェクト型でなければなりません

また、MSVC-v141 (C++17) コンパイラでコンパイル エラーが発生しました。

エラー C2338 バリアントでは、すべての T が非配列オブジェクト型 ([variant.variant]/2) である必要があります。


std::variantは主にクラス テンプレートであるため、 データのレイアウト/表現のみが必要なため、配列型のストレージを推測できないという問題がありますか?

0 投票する
3 に答える
1237 参照

c++ - std::rel_ops::operators が C++20 で廃止されるのはなぜですか?

cppreference.comによるとstd::rel_ops::operator!=,>,<=,>=、C++20 では廃止される予定です。

背後にある理論的根拠は何ですか?