瞭解右值和臨時對象之間的區別花了我相當長的一段時間。但現在75頁的最終狀態委員會草案:FCD中的右值和臨時對象
的右值 [...] 是的x值,臨時對象或其子對象,或者是不具有關聯的值目的。
我不敢相信我的眼睛。這一定是一個錯誤,對吧?
要澄清一下,這裏就是我所理解的術語:
#include <string>
void foo(std::string&& str)
{
std::cout << str << std::endl;
}
int main()
{
foo(std::string("hello"));
}
在這個程序中,有兩個表達式是表示同臨時對象:在prvalue std::string("hello")
和左值str
。表達式不是對象,但它們的評估可能會產生一個。具體而言,對價值的評估產生了一個臨時對象,但是價值並不是一個臨時對象。有人同意我或我瘋了嗎? :)
你可能會考慮通過發佈一個問題直接詢問標準人員comp.lang.C++。std – 2010-06-09 17:07:13
@Noah:我做到了。讓我們看看會發生什麼:) – fredoverflow 2010-06-09 17:36:32
[鏈接到comp.std.C++線程](http://groups.google.de/group/comp.std.c++/browse_thread/thread/5cdae718218a462c) – fredoverflow 2010-06-10 21:48:05