Je viens de voir une discussion entre utilisateurs branches de C++. Je
rencontre un probleme avec 2 versions diffrentes de g++:
gnu.gcc.g++ 2.95.3.0 installe sur un IBM RISC6000
egcs-c++-1.1.2-30 installe sur RedHat 6.2
une instruction:
cout<<UnObjet.AfficheInfo()<<" ensuite
"<<UnObjet.Modif().AfficheInfo()<<endl;
avec la methode Modif() qui retourne l'objet par reference (return
*this;)
Avec gnu.gcc.g++ 2.95.3.0 les termes sont evalues de gauche a droite (on
affiche l'info avant la modif puis l'info apres la modif)
Avec egcs-c++-1.1.2-30 les termes sont evalues de droite a gauche, c'est
a dire que la modif est d'abord appliquee avant tout affichage !
Je sais que l'operateur = est evalue de la droite vers la gauche (pour
ecrire a=b=c=4;) ce qui est une exception a l'ordre d'evaluation normal
des expressions. Mais qu'en est il de l'operateur << des objets ostream
?
Qui a raison et qui a tort ?
Patrick
--
===============================================================
| Equipe M.O.S.T. | http://most.hmg.inpg.fr |
| Patrick BEGOU | ------------ |
| LEGI | mailto:Patrick.Begou@hmg.inpg.fr |
| BP 53 X | Tel 04 76 82 51 35 |
| 38041 GRENOBLE CEDEX | Fax 04 76 82 52 71 |
===============================================================