問題タブ [explicit-conversion]
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++ - 変換コンストラクタと演算子の両方が存在し、明示性が関与する場合の動作
変換コンストラクターと変換演算子の両方を持つコードがあります。
- 両方とも明示的でない場合。最初の式があいまいであるというコンパイラ エラーが発生します。2 番目の式は、コンストラクターを呼び出します。
- 演算子のみが明示的である場合、両方の変換でコンストラクターが使用されます。
- コンストラクターのみが明示的である場合、2 番目の変換はコンストラクターを呼び出し、最初の変換は演算子を使用します。
- 両方が明示的である場合、2 番目の式のみをコンパイルできます。コンストラクターを使用します。
2 番目のシナリオの 2 番目の式で変換演算子が呼び出されなかった理由がわかりませんでした。
また、4 番目のシナリオ (最初のシナリオと同様) であいまいなエラーが発生することを期待していましたが、コンストラクターが選択されました。
-pedantic および -std=c++17 フラグを指定して g++ 7.4.0 を使用してコンパイルしました。
c++ - if (static_cast(x)) 対 (x) の場合
次のように、条件付きで bool への明示的なキャストを日常的に行う同僚がいます。
しかし、そのような冗長さの正当な理由を見つけることができませんでした。何か案は?
編集: 同僚は、それは明快で明確であることだと言っていますが、私はこの説明があまり説得力があるとは思いません. 他の C++ 専門家がこれを推奨しているかどうかを確認するために、ここに質問を持ち出しました。
c# - c# での 2 つのリスト/IEnumerable 間の暗黙的/明示的な変換
2 つのリスト間で暗黙的/明示的な変換を行うことはできますか?