問題タブ [spaceship-operator]
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++ - 宇宙船のオペレーターが等値演算を実行することを許可しないのに、不等値操作を許可するのはなぜですか?
3 方向の演算子オーバーライドを持つクラスの等価演算でコンパイラ エラーが発生する理由を知っている人はいますか? 私はVS2019を使用しています。
上記の行でエラーが発生します。
編集: C++20 のデフォルトでない演算子 <=> は == と != を生成しないの説明では、不等号演算子が機能するのに等号演算子が機能しない理由に対処していないことに注意してください。
編集: 上記のリンクは、1 か月後に再読した後、今では理にかなっています。
c++ - C++20 の空の構造体に暗黙的な宇宙船演算子がないのはなぜですか?
動機: std::variant を使用して、一部の列挙型状態が状態を保持できる「ファンシー」な列挙型を実装することがあります。
バリアントにを使用する場合<=>
は、空の構造体に <=> が定義されている必要があります。タイプの状態のビットが 0 の場合、そのタイプのすべてのインスタンスが同じであるため、これは少し奇妙に思えます。
完全な例: