Salut � tous.
Comme nous le savons tous, on ne peut pas passer le r�sultat d'un appel de fonction en tant que r�f�rence non constante en argument d'une autre fonction.
Le code suivant ne compile pas:
Par contre dans le cas de la classe auto_ptr ce code compile:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 int getint(); void takeint(int&); ... takeint(getint);Ca n'aurait rien d'anormal dans le cas d'une autre classe, mais auto_ptr a la particularit� de prendre en argument une r�f�rence non constante en argument dans son constructeur par d�faut et son op�rateur d'affectation. Donc logiquement on se retrouve dans le m�me cas de figure que le premier code, pourtant le compilateur l'accepte.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 auto_ptr<int> getauto(); ... auto_ptr<int> myauto(getauto()); myauto=getauto();
Donc ma question: pourquoi?
Edit: faudrait que je lise un peu mieux le code avant de poster moi, en fait c'est un hack toute b�te au niveau de la classe auto_ptr, faites comme si j'avais rien dit!
Partager