probleme template - C++ - Programmation
Marsh Posté le 20-07-2004 à 23:57:33
c'est quoi ce code?
jocebug?
Marsh Posté le 21-07-2004 à 00:05:30
Pourquoi UtiliseMyIterator::f() est elle virtuelle ?
et tous ces :
template class UtiliseMyIterator<long>;
template class UtiliseMyIterator<double>;
template class UtiliseMyIterator<bool>;
template class UtiliseMyIterator<short>;
ca sert a quoi o_O ?
Marsh Posté le 21-07-2004 à 00:06:23
bein il veut juste les faire instancier par le compilo
Marsh Posté le 21-07-2004 à 00:07:44
ok ^^ bon ben reste que le bug de SUN (ce qui m'etonenrasi pas)
Marsh Posté le 21-07-2004 à 00:08:49
comment ca c'est quoi ce code ?
c un extrait d'un truc bien plus compliqué.
j'ai laissé que ce qui est important pour le probleme
ca devrait compiler normalement
pourquoi f est virtuelle ? parce que j'ai envie, peu importe !
Marsh Posté le 21-07-2004 à 00:09:34
Oualb a écrit : comment ca c'est quoi ce code ? |
ben voila, les codes partielle c mal.
Serieusement, je penche sur un bug de CC ...
tu as essayé avec un *bon* compilo style gcc 3.3 ?
Marsh Posté le 21-07-2004 à 00:19:49
et si tu forces la main sur la conversion?
template<typename T> |
Marsh Posté le 21-07-2004 à 00:24:30
si je force le cast ca marche ...
mais bon pourquoi le cast implicite marche pour tous les types simples du langage sauf pour bool ?
bool c'est un type à part ou quoi ?
Marsh Posté le 21-07-2004 à 00:27:44
non, essaye avec juste une seule instanciation d'un autre type intégré
Marsh Posté le 21-07-2004 à 00:30:22
ReplyMarsh Posté le 21-07-2004 à 00:30:22
si je commentes la ligne avec le bool ca marche
y'a vraiment que le bool qui foire
et ca fait chier.
Marsh Posté le 21-07-2004 à 00:32:42
verdoux a écrit : std::vector<bool> oui |
tu peux donner plus de détails la ?
en quoi c'est plus spécial que std::vector<long> ?
Marsh Posté le 21-07-2004 à 00:34:34
Le guru a dit (et je ne fais que bêtement le répéter)
std::vector<bool> IS NOT a Container
One consequence of this is that it can't just return a normal bool& from its operator[] or its dereferenced iterators
http://www.gotw.ca/gotw/050.htm
Marsh Posté le 21-07-2004 à 00:34:41
parce que std::vector a une spécialistion particulère pour les bool (bitmap)
Marsh Posté le 21-07-2004 à 00:43:11
c'est fou ca !!
j'avais jamais entendu parler de ca
eh bien merci ! je vais me débrouiller autrement
genre avec des char, ou alors il faudrait que je vire la spécialisation pour bool, mais bon c'est quand même un peu hacker la STL !
Marsh Posté le 20-07-2004 à 23:56:29
Salut
J'ai un probleme avec le bout de code suivant :
j'essaie de compiler ca sous Sun avec CC5.3, et la troisieme instantiation de template, celle avec bool, me fait une erreur :
operation * MyIterator<bool> is invalid.
pourtant ca marche pour les autres. qu'est ce que le bool a de différent ?
j'ai essayé avec visual studio 6, ca marche.
alors bug dans la compilo de Sun, ou une siouxerie que j'ai pas pigée ?