赋值给非const引用

时间:2016-11-24 15:09:10

标签: c++ visual-studio-2015

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

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

TEST(Arguments, NonConstReference)
{
   Foo& bob = Func6();
}

修改

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

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

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

1 个答案:

答案 0 :(得分:8)

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