I can't understand why a.funct() can be the left operand of the assignment operator even if funct() is not returning a l-value reference.

```
class A
{
public: 
    A funct () {A x; return x;}
};

int main () 
{
    A a,b; a.funct()=b;
}

```