调用返回结构体的函数是rvalue表达式,但它的成员呢?
这段代码在我的g++编译器上运行良好,但gcc报错显示"需要左值作为赋值运算符的左操作数":
struct A
{
int v;
};
struct A fun()
{
struct A tmp;
return tmp;
}
int main()
{
fun().v = 1;
}
gcc将fun().v
视为rvalue,我能理解这一点。但是g++没有认为这个赋值表达式是错误的。这是否意味着在C ++中fun1().v
是lvalue?现在的问题是,我搜查了C++98/03标准,没有找到任何关于fun().v
是lvalue还是rvalue的说明。那么,它是什么呢?
Foo
的函数和一个结构体。在这种情况下,Foo
指的是该函数,而struct Foo
则是指该类型。 - MSalters