問題タブ [conversion-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++ - static_cast と変換演算子の直接呼び出し?
簡単な例として、次のクラスを考えてみましょう。
変換演算子を直接呼び出す必要がありますか、それとも単に呼び出しstatic_cast
てそれで処理を任せるべきでしょうか?
これら 2 つの行はほとんど同じことを行います (つまり、変換演算子を呼び出します)。私が知る限り、これらの動作に実際の違いはありません。したがって、ここでの本当の問題は、それが本当かどうかです。これらは私には同じように見えますが、理解できない微妙な違いがまだある可能性があります.
では、構文が異なるという事実以外に、これらのアプローチ (この例には当てはまらない可能性があるものも含む) の間に実際的な違いはありますか? どちらを優先する必要がありますか?その理由は?
c++ - 参照型と非参照型の変換演算子テンプレートを区別する
私は、struct InferValueType
参照型を含む他の型に暗黙的に変換できる を持っています。次のコードを使用してこれを実現します。
InferValueType
ユーザーによってインスタンス化されることはありません。代わりに、関数の戻り値として提供します。
との組み合わせによりInferValueType
、read
ユーザーは次のような遅延コードを記述できます。
これを GCC 4.8、4.9、5、6、および Clang 3.7 と 3.8 に対してテストしました。GCC 4.8 だけがあいまいさについて文句を言います。
これは、 and をそれぞれ and を使用して構築できるためだと思いint
ます。MyType
const int&
const MyType&
質問:これは 4.9.2 より前の GCC の特性ですか、それとも実際には C++11 でのあいまいさですか?
完全な例はこちらです。
c++ - 変換関数テンプレートのオーバーロード
次の点を考慮してください。
の状況b
は簡単で、#2
実行可能な唯一の候補です。の初期化に#2
は が好まれるが、 の初期化には 2 つがあいまいであることを示すルールは何ですか?#1
int const&
int
c++ - オペレーターを考慮して自動控除を強制する方法はありますか() オーバーコピー割り当て?
このラッパーを介して基になる変数が変更されたときに変更を通知する変数ラッパーがあるため、他のオブジェクトが変更をリッスンできます。
それは問題なく動作します (つまり、基礎となるオブジェクトでメンバー関数を代入、追加、減算、呼び出しできます (ただし、これらには変更を通知する方法はありません) など)、わずかな問題が 1 つあります。
value
here は として正しく推定されますwrapper<int>
。このコンストラクトsome_object.some_wrapper
を typeint
のように動作させて、変数value
として推定する方法はありますか?int