【发布时间】:2018-04-03 17:31:29
【问题描述】:
我在 Visual C++ 17 编译器上有以下代码:
#include "stdafx.h"
class Foo {};
Foo FuncBar()
{
return Foo();
}
int main()
{
Foo &myFoo = FuncBar();
}
通常 IIRC,将临时变量分配给左值应该是非法的。在这里,我返回一个临时 Foo() 并将其绑定到一个左值引用。 但是,此代码可以编译,甚至可以正常运行。为什么允许这样做?
【问题讨论】:
-
因为微软认为允许它是个好主意......实际上没有任何其他答案
-
@M.M 是微软在某处记录的吗?
-
他们认为 Xamarin 是个好主意,所以可信度值得怀疑......
-
@OnurGumus 是的,你试过搜索他们的文档吗?
-
@M.M 我找到了 Microsoft Extensions 的文档。但是看不到这种特定的行为被记录在案。但是设置 /Za 肯定会“解决”这个问题。
标签: c++ visual-c++ lvalue