我应该按值还是通过r值参考来捕获返回值?

时间:2013-07-21 04:01:43

标签: c++ c++11 move-semantics rvalue-reference

如果我有一个返回某些对象的函数,比如

std::vector<int> foo()
{
    std::vector<int> v;
    v.push_back(1);
    return v;
}

然后说

之间有什么区别
std::vector<int> &&v = foo();

std::vector<int> v = foo();

(为什么)我会不会喜欢另一个?

(我怀疑这可能是一个重复的问题,但我找不到合适的搜索字词。)

1 个答案:

答案 0 :(得分:3)

阅读其中一个(并因此知道它正在做一些合理的事情)需要了解临时性以及临时与引用的绑定如何延长临时的生命周期。另一个是:

std::vector<int> v = foo();

总是选择一个更容易理解的。如果foo返回const&&&,它也可以正常工作,而按&&存储它只有按值或{{1}返回时才有效}。