赋值给非const引用

Neu*_*ino 5 c++ visual-studio-2015

VS2015 Update 3编译时没有错误,也没有警告.然而,我的印象是临时工具只能绑定到const引用.这是不符合的还是我误解了什么?

struct Foo {};
Foo Func6() { return Foo(); }

TEST(Arguments, NonConstReference)
{
   Foo& bob = Func6();
}
Run Code Online (Sandbox Code Playgroud)

编辑

由marcinj链接的问题是同一个问题,虽然这个问题并不是特别关于VS2015,而是在我输入这个问题时找不到.

我用/ W4进行了测试,看看我是否收到了警告并没有看到,但是再次测试我发现现在我做了.当打开项目属性来调整设置时,VS2015习惯于显示与当前选择的构建配置不同的构建配置的属性对话框,这是一个让我多次抓到的最无益的行为,(我肯定会继续这样做).

正如在其他问题中提到的那样,使用禁用语言扩展(/ Za)会使这个错误,但遗憾的是它不是一个可用的解决方案,因为微软自己的平台头不会编译.

Rei*_*ica 8

MSVC编译器具有非标准扩展,默认情况下启用,允许临时绑定到非const引用.要禁用此功能,请使用命令行选项/Za或相应的项目属性.