これは (VS2010 を使用して) コンパイラに依存するかどうかに関係なく、次の操作で予期される移動動作が呼び出されないのはなぜですか。
LargeObject x;
x = SomeFunc(x);
関数をペアとして定義しました
LargeObject SomeFunc(const LargeObject& ob)
{
LargeObject newOb;
// perform operation on new object using old object
return newOb;
}
LargeObject SomeFunc(LargeObject&& ob)
{
// change object directly...
return std::move(ob);
}
私は明示的に書く必要があります
x = SomeFunc(std::move(x));
それを実現するために、私はそれが好きではありません...
編集: const-ref を使用する最初の関数は、次のようなことも行う必要があるためです。
LargeObject x;
LargeObject y = SomeFunc(x);