【发布时间】:2015-06-04 23:26:44
【问题描述】:
考虑这种函数:
std::vector<int> generateVector() {
return std::vector<int>(10, 0);
}
像这样调用 generateVector() 有什么好处吗:
std::vector<int> v = std::move(generateVector());
..或者这种移动优化现在由编译器自动完成?
【问题讨论】:
-
问问自己为什么它们被称为右值引用!!
-
好的,现在我已经问过自己了。正如斯科特迈耶斯认为你应该使用 int x = std::move(y) 我真的很困惑,因此这个问题。我看不出这些案例之间的区别。这不是重复,在那个“可能重复”的问题中是完全不同的场景。
-
@user2061057
or is this kind of a move optimization now automatically done by the compiler?。重复的答案指出:所有返回值都已移动或优化,因此无需显式移动返回值。这不是对您问题的直接回答吗?这怎么不是重复的? -
我们是在谈论重复的答案还是重复的问题?问题不同,std::move 的使用方式也不同。
-
如果它让您满意,我仍然可以将其标记为重复。
标签: c++ c++11 move-semantics