Visual Studio和g ++之间的区别是什么?

时间:2014-12-09 14:59:36

标签: c++ visual-studio-2013 reference g++ rvalue

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可以编译它?

1 个答案:

答案 0 :(得分:-1)

它只是Microsoft的语言扩展名。:)

您应该在MS VC ++项目的属性中设置这些扩展名。

我在我的个人论坛中用线程MS VC++ 2010: when a bug is not a bug but a language extension描述了MS C ++编译器的一些令人困惑的行为虽然它是用俄语写的,但你可以使用例如google service translate翻译成英文。