要返回的std ::移动(x)或不?(To return std::move (x) or not?

2019-08-22 13:53发布

std::vector<double> foo ()
{
    std::vector<double> t;
    ...

    return t;
}

std::vector<double> foo ()
{
    std::vector<double> t;
    ...

    return std::move (t);
}

相同呢?

更确切地说,是return x总是等同于return std::move (x)

Answer 1:

他们不是等价的,你应该总是使用return t;

更长的版本是,当且仅当return语句可享有返回值优化,然后回返结合右值引用(或通俗“的move是隐含”)。

拼写出return std::move(t); 然而,实际上抑制返回值优化!



文章来源: To return std::move (x) or not?