开发平台(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,
烦请各位前辈指教小弟观念错误的地方,谢谢。