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