問題タブ [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.

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

c++ - 明示的な変換演算子テンプレートの優先度とあいまいさ

カスタムバリアントのような型からの明示的な変換を実装するために、プロジェクトでテンプレート化された明示的な変換演算子をいじっています。私の問題を再現する最小限の例は次のようになります (C++14 モード):

私が直面した問題は、 static_cast 変換用に選択された演算子です。GCC では、予想される (1) ケースのようなものです。出力は次のとおりです。

しかし、Clang は次の出力でこれをコンパイルすることを拒否します。

(1) ではなく、変換シーケンスで追加のコンストラクター呼び出しが必要になるように見えるのに、Clang が変換 (2) を考慮するのはなぜですか? そして、そうするのは正しいですか(そしてGCCは間違っています)?