将临时绑定到左值引用
我有以下代码
string three()
{
return "three";
}
void mutate(string& ref)
{
}
int main()
{
mutate(three());
return 0;
}
你可以看到我正在将 three() 传递给 mutate 方法.这段代码编译得很好.我的理解是,不能将临时对象分配给非常量引用.如果是,这个程序是如何编译的?
You can see I am passing three() to mutate method. This code compiles well. My understanding is, temporaries can't be assigned to non-const references. If yes, how this program is compiling?
有什么想法吗?
尝试过的编译器:VS 2008 和 VS2010 Beta
Compilers tried : VS 2008 and VS2010 Beta
推荐答案
以前是用VC6编译器编译的,所以我猜为了保持向后兼容VS2008是支持这个非标准扩展的.尝试使用 /Za (禁用语言扩展)标志,那么你应该得到一个错误.
It used to compile in VC6 compiler, so I guess to maintain backward comptibility VS2008 is supporting this non-standard extension. Try with /Za (disable language extension) flag, you should get an error then.
相关文章