VS2010:临时不能绑定到非常量引用



我知道Temporaries不能绑定到非常量引用。

class X
{
  int i;
};
X fun()
{
 return X();
}
void func(X &x)
{
}
int main()
{
 func(fun());
 return 0;
}

fun的调用不是在生成临时的吗?为什么临时可以在这里链接到non-const reference。我不明白为什么这个汇编这么好。

编辑:我正在使用VS2010。我不明白这怎么回事。

fun的调用不是在产生临时的吗?

是的。

为什么在这里临时可以链接到非常量引用。

它不能。

我不明白为什么这个汇编这么好。

因为你的编译器有问题。

我正在使用VS2010。我不明白这怎么回事。

该编译器对该语言有许多非标准的"扩展"。这只是该编译器接受的不可靠代码的一个例子,但不是一致的。

最新更新