問題タブ [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.
c++ - ユニオンはできるのに、std::variant が配列オブジェクト型を保持できないのはなぜですか?
union
以下は簡単な例です。次のように低レベルを定義できます。
しかし、このように宣言することはできませんstd::variant
(構文については気にしないでください。間違っている場合は訂正してください!、アイデアをつかんでください)
cppReferenceは、次のことを明確に述べています。
テンプレート パラメータ
タイプ - このバリアントに格納できるタイプ。すべての型は (おそらく cv 修飾された) 非配列オブジェクト型でなければなりません
また、MSVC-v141 (C++17) コンパイラでコンパイル エラーが発生しました。
エラー C2338 バリアントでは、すべての T が非配列オブジェクト型 ([variant.variant]/2) である必要があります。
std::variant
は主にクラス テンプレートであるため、
データのレイアウト/表現のみが必要なため、配列型のストレージを推測できないという問題がありますか?
c++ - std::rel_ops::operators が C++20 で廃止されるのはなぜですか?
cppreference.comによるとstd::rel_ops::operator!=,>,<=,>=
、C++20 では廃止される予定です。
背後にある理論的根拠は何ですか?