Envoyé par
raphchar
Ce n'est pas du débuggage donc, pas de pile d'appel.
Lorsque le compilateur cherche à compiler, il regarde d'abord les sources, essaye de les compiler, et si un template est par exemple instancié dedans, il va lire la déclaration du template, essayer de la compiler, etc... jusqu'à ce que tous les types soits résolu ou qu'il y ait un erreur. S'il n'y a pas d'appel eu sens runtime du terme, j'entend par la, la trace de ton compilo jusqu'au fichier incluant le header et instanciant ton pair.
Envoyé par
raphchar
Peut-être le problème vient-il de:
1 2 3
|
vec2f & operator=(const vec2f & src) { x=src.x; y=src.y; return *this; }
vec3f & operator= ( const vec3f & src ) { x=src.x; y=src.y; z=src.z; return *this; } |
je ne vois pas pourquoi, ce genre de code n'a pas de raison de ne pas marcher.
Par contre,
Envoyé par
raphchar
Non je n'utilise pas c++0x
peut être mais le code que tu montre en exemple utilise du c++0x (ou alors y'a encore un truc que j'ai loupé dans la norme précédente ) : dans
pair& operator=(pair<_Ty1, _Ty2>&& _Right)
"&&" désigne un objet passé par rvalue... et à ma conaissance, seul le c++0x (TR1 c++11 et compagnie) définissent la rvalue.
Ensuite, je sais qu'il y a des histoires un peu compliquées sur la transformation de lvalue en rvalue et c'est probablement de là que vient ton erreur.
Je vais voir si je peux trouver plus d'information à ce sujet.
bonne chance
Partager