Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Informatique » Logiciel » [gcc] bug avec des templates

Francesco
Modérateur
Citer Linux Firefox 2 - Posté le 20/05/2008 à 18:01
Bonjour à tous,

J'ai trouvé un petit bug au niveau de gcc, plus particulièrement au niveau de g++. Voulant faire un rapport de bug, je voudrais couvrir le plus large panel des versions de gcc pour lequel cela bug.

voici un code qui pose problème :


template<class Item> class Object{};

template<class Item> class Parent
{
public:
virtual void operator=(const Object<Item> iterator);
virtual void foo(const Object<Item> iterator);
};

template<class Item> class Child : public Parent<Item>{};

int main(int argc, char** argv)
{
Object<int> object;
Child<int> child;

child.foo(object);
child.operator=(object);
child = object;
}



Pouvez-vous copier/coller ce code dans un fichier et tester la compilation siouplai (clein d'oeil)

Info souhaitées :
- version de gcc + architecture utilisée
- est-ce que le message d'erreur est quelques choses comme :


erreur: no matching function for call to ‘Child<int>::operator=(Object<int>&)’
note: candidats sont: Child<int>& Child<int>::operator=(const Child<int>&)




Pour moi, la version de gcc est la 4.1.2 (j'ai la 4.2.3 en cours de compilation) sur une architecture x86.


Merci d'avance !
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 20/05/2008 à 18:11
Bug aussi avec la version 4.2.3 toujours sur x86.

Sinon, petit commentaire au passage, je sais que le code n'est pas complet, et c'est tout à fait volontaire dans un souci de simplicité. Le code initial était bien plus important.

Ce petit bout de code permet de mettre en evidence que l'operator= définit dans une classe mère template n'est pas connu de ses classes filles templates, alors que le membre foo lui l'est.
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 20/05/2008 à 19:01
Je viens de tester avec un autre compilateur (celui d'Intel), meme type de problème. Donc cela vient du code et non de gcc. Désolé pour le dérangement !
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,077 s - Crédits - Stats
1 connecté