c++ - 分配给非常量引用

标签 c++ visual-studio-2015

<分区>

VS2015 Update 3 编译它没有错误也没有警告。然而我的印象是临时对象只能绑定(bind)到 const 引用。这是不符合规定还是我误解了什么?

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

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

编辑

marcinj 链接的问题是同一个问题,尽管这个问题不是专门针对 VS2015 的,而且在我输入这个问题时也没有找到。

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

正如在其他问题中提到的那样,使用禁用语言扩展 (/Za) 会导致此错误,但不幸的是这不是一个可用的解决方案,因为 Microsoft 自己的平台 header 随后将无法编译。

最佳答案

MSVC 编译器有一个默认启用的非标准扩展,它允许临时对象绑定(bind)到非const 引用。要禁用此功能,请使用 command-line option /Za或相应的项目属性。

关于c++ - 分配给非常量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40789671/

相关文章:

c++ - 控制台程序中的奇怪行为

c++ - 应该避免还是鼓励 `using std::cin` 和 `using std::cout`?

c++ - 按特化排除类(class)成员

C++11 通用初始化导致意外初始化?

c# - 为什么编译器会为已分配但从未使用过其值的变量给出错误而不是警告

c# - 在visual studio 2015下以x86启动一个asp.net core项目

css - LESS 文件中的两个独立窗口

c++ - 为什么 TCanvas 在 root shell 中执行宏时不绘制?

xamarin - 从 Visual Studio 2015 构建时如何为 Xamarin.iOS 指定自定义链接器配置?

c# - 构建卡在 Visual Studio 2015 中