Ce code n'est pas valide ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part template<class _I> void foo(_I i, unsigned _I ui);
unsigned _I ne plait pas au compilateur (VC++6).
Ce code n'est pas valide ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part template<class _I> void foo(_I i, unsigned _I ui);
unsigned _I ne plait pas au compilateur (VC++6).
Il me semble qu'il faille passer par un typedef, car ton type étant composé le compilo guele,
ma réponse provenant d'une bribe de mémoire je n'en suis pas sur a 100%..
Salut,
Pour te permettre de comprendre pourquoi ton compilateur refuse la déclaration d'un argument sous la forme de unsigned _I, pose toi simplement la question de savoir ce que représente _I de manière générale (donc, avant que tu ne donne la moindre précision sur ce que c'est), et, surtout, dans quel cas (avec quel types) le mot clé unsigned est applicable
Si tu n'arrive pas à trouver de réponse satisfaisante, je te la donnerai, mais, dans un premier temps, il semble utile que tu y réfléchisse par toi même![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Cela va sans dire que _I ne pourra être que du genre char, short, int, long, __int64... bref un type primitif. Mais manifestement il faut que je le dise. Oui, j'ai compris que "unsigned MyClass" n'a pas de sens (quoique...), mais je veux bien que le compilateur rouspête, éventuellement, si le type n'est pas primitif, lors de l'instantiation du template et non pas lors de sa déclaration.
Maintenant que c'est dit, pourquoi je peux pas faire ce genre de template ?
Merci.
Les templates ne sont pas des macros. Il y a tout un ensemble de choses qui sont verifiees a la definition du template et non a l'instanciation.
Surtout qu'ici,
n'est pas non plus valable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 typedef int foo; unsigned foo bar
Pour te convaincre de tout ça, essaye de faire "joujou" avec ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <typename T> struct make_unsigned { typedef unsigned T type; };
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Partager