開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
問題(Question):
關於右值參照跟右值的生命週期
預期的正確結果(Expected Output):
class test暫存值被move進DerivedRef中的T&,等DerivedRef被解構後才會消失。
錯誤結果(Wrong Output):
class test暫存值執行完後就被直接解構。
程式碼(Code):(請善用置底文網頁, 記得排版)
any template:
http://codepad.org/XT2ed7Hc
test main code:
http://codepad.org/CZhy27AQ
補充說明(Supplement):
目前自行在網路上找any在C++ 11的實作的code,
但看到的Sample Code並沒有使用右值參照來儲存的,
想請教板上的各位前輩是否是我實作的方法有誤還是實作上理論是不可行的?
因為我原本的想法是在:
any = test();
test()會回傳一個右值暫存值,move進DerivedRef的T &,
可以減少不必要的物件複製,但結果看起來執行完後暫存值就解構了,
T&收到的是不合法的Ref,導致Exception,
煩請各位前輩指教小弟觀念錯誤的地方,謝謝。