11
は私がなぜC++はデフォルトでrvalue参照を構築するのですか?
void doWork(Widget && param) // param is an LVALUE of RRef type
{
Widget store = std::move(param);
}
は、なぜ私はstd::move()
と右辺値に戻すparam
をキャストする必要がありますか、次の機能を持っていると言いますか? param
の型は、関数のシグネチャでrvalue参照として宣言されているので、rvalueであることは明らかではありませんか?この原理だけで、移動コンストラクタをここで自動的に呼び出すべきではありませんか?
なぜこれはデフォルトでは起こりませんか?あなたのデザインの
わかりました。それは意味をなさない!私は同意する、コピーデザインは常に暗黙の移動よりも安全です! – barney
@バーニー単純な例があなたを「ええ、私は理解します!うれしい私は1つを提供することができます。 – bolov
IDは実際にはこれを行う実際のコードを見つけるのには本当に苦労しますが、コンパイラが検出できず、エラーとして扱うことはできません。相対的なトレードオフに関する提案について議論があったのでしょうか、それともはるかに起こりそうな状況がありますか? –