string foo() { return "hello"; }
int main()
{
//below should be illegal for binding a non-const (lvalue) reference to a rvalue
string& tem = foo();
//below should be the correct one as only const reference can be bind to rvalue(most important const)
const string& constTem = foo();
}
GCC是产生编译错误的好方法:std::string&从类型的临时类型对类型的非常量引用进行无效的初始化std::string
VS2008还不错,至少它给出了编译警告:警告C4239:使用了非标准扩展名:'initializing':从转换std::string为std::string &非常量引用只能绑定到左值
这是有问题的一个-VS2010(SP1)可以很好地编译,没有任何错误或警告,为什么??!我知道VS2010中的右值引用可用于与右值绑定,但是我没有使用&&,而是在演示代码中,我只是在使用非常量左值引用!
somone可以在这里帮助我解释VS2010的行为吗?这是一个错误!谢谢
交互式爱情
噜噜哒
潇潇雨雨
相关分类