为什么Visual C ++编译器允许临时赋值左值引用?

时间:2017-10-23 08:18:38

标签: c++ visual-c++ lvalue

我在Visual C ++ 17编译器上有以下代码:

#include "stdafx.h"
class Foo {};

Foo FuncBar()
{
    return Foo();
}
int main()
{
    Foo &myFoo = FuncBar();
}

正常情况下,IIRC,将临时值分配给左值应该是非法的。在这里,我返回一个临时的Foo()并将其绑定到左值ref。 但是这段代码编译甚至运行正常。为什么允许这样做?

1 个答案:

答案 0 :(得分:0)

这是Microsoft C ++扩展。您可以使用/ Za标志使编译失败。