2013-04-12 75 views
12

要返回std :: move(x)還是不?

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)

回答

14

它們不等價,您應該始終使用return t;

較長的版本是,當且僅當返回語句符合返回值優化的條件時,則返回者綁定到右值引用(或俗稱「move隱含」)。

然而,通過拼寫出return std::move(t);,你實際上禁止返回值優化!

相關問題