Вызов функции, возвращающий структуру, является выражением rvalue, но как его члены?
Этот фрагмент кода хорошо работает с моим компилятором g++, но gcc дает сообщение об ошибке "lvalue, требуемое как левый операнд назначения":
struct A
{
int v;
};
struct A fun()
{
struct A tmp;
return tmp;
}
int main()
{
fun().v = 1;
}
gcc рассматривает fun().v
как rvalue, и я могу это понять.
Но g++ не считает, что выражение присваивания неверно. Означает ли это fun1(). V является lvalue в С++?
Теперь проблема в том, что я искал стандарт С++ 98/03, ничего не узнавая о том, является ли fun().v
значением lvalue или rvalue.
Итак, что это?