class A
{
...
}
A foo()
{
A fooA;
return fooA;
}
int main()
{
A &a = foo();
return 0;
}
这是简单的代码。我在VS2013中测试了这个。没有错误或警告。 我认为foo()函数返回临时的" fooA"。这是右值。 在g ++中,错误发生在" A& a = foo();"中。在错误消息中,它必须是" const A& a"。 我认为g ++是对的。而且我不知道为什么VS2013可以编译它?
答案 0 :(得分:-1)
它只是Microsoft的语言扩展名。:)
您应该在MS VC ++项目的属性中设置这些扩展名。
我在我的个人论坛中用线程MS VC++ 2010: when a bug is not a bug but a language extension描述了MS C ++编译器的一些令人困惑的行为虽然它是用俄语写的,但你可以使用例如google service translate翻译成英文。