c++ - 为什么 Visual C++ 编译器允许对左值引用进行临时赋值?

标签 c++ visual-c++ lvalue

<分区>

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

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

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

通常 IIRC,将临时对象分配给左值应该是非法的。这里我返回一个临时的 Foo() 并将它绑定(bind)到一个左值引用。 然而这段代码编译甚至运行良好。为什么允许这样做?

最佳答案

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

关于c++ - 为什么 Visual C++ 编译器允许对左值引用进行临时赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46884761/

相关文章:

c++ - 返回 vector 的奇怪行为

c++ - 左值需要作为赋值的左操作数(递增引用的变量)C++

rust - 为什么这个右值没有提升为引用中指定的左值?

c++ - Gcc 预处理器和粘贴

c++ - "Mark Directory as"除了 CLion 2020.3 中的 python 命名空间包,什么都不能

c++ - 功能概念

c++ - dll shell 扩展如何知道要执行的程序位置?

c++ - 没有合适的默认构造函数可用并且不存在默认构造函数

c++ - if 语句总是执行

c - gstreamer 示例文档代码未运行