No, in realtà il codice era volutamente errato, e l'ho avevo scritto a livello didattico proprio per confermarmi il fatto che i temporary objects siano per default const.Originariamente inviato da gorazio_rm
Secondo me, questo codice è assolutamente giusto, perchè X è oggetto.
Hai ragione solo per caso quando X è Data Type, int per esempio.
In particolare in quel codice viene creato un temporary object per contenere il valore di ritorno di anX, e viene distrutto non appena non serve più (alla fine della valutazione dell'espressione).
Il problema è legato a VC++, per il quale il codice è (erratamente) corretto, come se in VC++ i temp-objs siano per default non-const.
In dev-c++ (che compila codice standard) il problema viene segnalato e quel codice non passa.