Warum gibt der operator= eine Referenz zurück und nicht den eigentlichen Wert? Ich versteh das nicht so ganz!

Warum gibt der operator= eine Referenz zurück und nicht den eigentlichen Wert? Ich versteh das nicht so ganz!
Deswegen bleibt aber trotzdem die Rechtsassoziativität bestehen!
Eine Zuweisung '=' ist rechtsassosiativ weil der operator= etwas liefern muß, was selber auf der rechten Seite einer Zuweisung stehen darf!
Sonst würde ja auch keine Verkettung funktionieren:
void Verkettung( int wert1, int wert2, int wert3, int wert4)
{
wert1 = wert2 = wert3 = wert4;
}
Der Compiler macht daraus mathematisch gesehen folgendes:
wert1 = ( wert2 = ( wert3 = wert4 ) )
Wie Klammern aufgelöst werden, solltest du ja in der Schule gelernt haben :-)