VS2013允许使用非标准代码?

时间:2015-09-12 21:46:29

标签: c++ c++11 visual-studio-2013

我正在尝试使用C ++ 11引入的不同值类别,然后我尝试了一系列代码,在我看来这是没有意义的,但无论如何编译没有警告:< / p>

#include <iostream>

using namespace std;

class A
{
public:
int val;
   A() : val(10) {}
   A(const A& other) : val(other.val) {}
   A(A&& other) : val(other.val) {}
};

int main()
{
   A& a = A();
   cout << a.val << endl; // prints '10'
   return 0;
}

关注我的一行:

A& a = A();

现在,根据我的理解(这可能是错误的),A()是一个prvalue。在我看来,这意味着它是一个暂时的,它没有超出它出现的表达的生命周期。

这是否意味着引用类型a不能绑定到它?

我环顾四周,找不到这种行为被认为是正确的任何地方,这是可以理解的,因为它没有概念意义(至少对我来说)。引用类型a肯定会引用某些内容,因为我可以正常访问val

所以我的问题是,这个代码是非标准的,只是根据VS有效,或者这里有什么东西我完全被误解了(很可能)?

0 个答案:

没有答案