我一直在閱讀有關右值引用和std::move
,我有一個性能問題。對於下面的代碼:應該在這裏使用右值引用嗎?
template<typename T>
void DoSomething()
{
T x = foo();
bar(std::move(x));
}
它會更好,從性能的角度來看,要重寫這個使用右值引用,像這樣?
template<typename T>
void DoSomething()
{
T&& x = foo();
bar(x);
}
如果我理解正確的右值引用,這將只是充當如果bar(foo())
已被調用,如評論者指出。但是可能需要中間值;這樣做有用嗎?
可能不是。但是'foo'和'bar'是什麼樣的? – juanchopanza
爲什麼不只是'bar(foo())'? –
@MichaelBurr,我主要想知道它的理論性能。當然,'bar(foo())'會更乾淨,除非你需要將結果放在兩行之間。 – thirtythreeforty