0
私は、std::move
を返信文for exampleに書くことは絶対に注意してきました。いくつかのエッジケースを除いて、for example。std :: move returnステートメント
私は次のような別の簡単な例があります:std::move
が価値があるかもしれないと思います。しかし、私はなぜ、将来のC++でそれが変わるのか分からないのですか?
#include <iostream>
struct A
{
};
struct C
{
};
struct B
{
B(const A&, const C&) { std::cout << "B was copied\n"; }
B(A&&, C&&) { std::cout << "B was moved\n"; }
};
B f()
{
A a;
C c;
//return {a, c}; // Gives "B was copied"
return {std::move(a), std::move(c)}; // Gives "B was moved"
}
int main() {
f();
return 0;
}
戻ってきたオブジェクトを強制的に移動しようとしているわけではありません。それはアドバイスに関連していません。 – StoryTeller
これらの異なるコンストラクタは、 'B 'が移動またはコピーされることとは関係ありません。 – John
あなたのコードは 'return std :: move(x);'とはまったく異なります。あなたがここに移動するものは実際には戻り値とは無関係です – user463035818