我有这样的代码,我很好奇这是否安全。
#include <iostream>
struct A{
int x=4;
A* operator-(){return this;}
};
A func(){return A();}
int main(){
std::cout<<(-func())->x<<std::endl; //Dereferencing to temporary object
return 0;
}
我使用带有-O3的g ++ 6.3.0编译它,它按照我的预期打印了4。我知道如果我将-func()的结果放在一个新变量中并在以后取消引用它会不起作用,但在上面的例子中,结果是否得到保证?