12

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)?

4

1 回答 1

14

它们不是等效的,您应该始终使用return t;.

更长的版本是,当且仅当 return 语句符合返回值优化的条件时,returnee 才绑定到右值引用(或通俗地说,“move隐含的”)。

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

于 2013-04-12T21:35:37.127 回答