函数返回值(该函数替值返回)赋值给引用变量

函数返回值(该函数为值返回)赋值给引用变量
见如下示例代码:
class A
{
int a;
};

int fun_int( )
{
int a;
return a;
}

A fun_cls()
{
A a;
return a;
}

int main( )
{
int & a = fun_int();//该句编译出错:error C2440: 'initializing' : cannot convert from 'int' to 'int &'
A & b = fun_cls();//该句编译通过。  

return 0;
}

为什么针对int和class两种类型,有不同的结果呢?
求高手解答。

------解决方案--------------------
你的编译不够标准,应该都报错. fun_int() 和fun_cls() 都是右值表达式,引用只能有左值初始化。
好像ms c++有这样的问题。

------解决方案--------------------
返回值只是个临时变量(常量)

const int &a = fun_int();