我在Visual C ++ 17编译器上有以下代码:
#include "stdafx.h"
class Foo {};
Foo FuncBar()
{
return Foo();
}
int main()
{
Foo &myFoo = FuncBar();
}
正常情况下,IIRC,将临时值分配给左值应该是非法的。在这里,我返回一个临时的Foo()并将其绑定到左值ref。 但是这段代码编译甚至运行正常。为什么允许这样做?
答案 0 :(得分:0)
这是Microsoft C ++扩展。您可以使用/ Za标志使编译失败。