récupérer paramètre template int - C++ - Programmation
Marsh Posté le 12-11-2010 à 14:15:22
Tu viens de découvrir pourquoi il y avait des typedefs reprenant les paramètres templates dans pas mal de templates. Définis donc une constante entière reprenant ton paramètre.
Marsh Posté le 12-11-2010 à 14:43:12
le coup d'une variable ne va pas, il faut que ce soit accessible à la compilation.
ok pour les typedef pour les types, mais comment faire pareil pour un parametre entier ?
Marsh Posté le 12-11-2010 à 17:07:05
Code :
|
Marsh Posté le 12-11-2010 à 20:36:44
ReplyMarsh Posté le 12-11-2010 à 21:29:33
Un Programmeur a écrit :
|
1 et 3 sont identiques ici ?
Marsh Posté le 12-11-2010 à 22:43:24
Joel F a écrit : ou hériter de boost::mpl::integral_c et acceder au ::value |
Je crois que ton amour de boost t'égare. Ça me semble aussi sensé que de répondre à quelqu'un qui demande comment conserver un argument du constructeur d'hériter d'une classe:
Code :
|
plutôt que d'ajouter un membre. Il y a des cas où c'est effectivement ce qu'il faut faire, mais ils sont suffisamment rares pour qu'on suppose que ce n'en soit pas un sans indice sérieux.
Glock 17Pro a écrit : 1 et 3 sont identiques ici ? |
Plus ou moins. On peut s'arranger pour avoir un programme qui fait des choses différentes avec les deux, mais il faut le vouloir.
Marsh Posté le 13-11-2010 à 09:58:23
Un Programmeur a écrit : |
je ne vois pas en quoi. un exemple serait trop long à fournir ici ?
Marsh Posté le 13-11-2010 à 10:44:00
Variations sur les templates, les types sont différents. En y réfléchissant, c'est pire, l'enum anonyme ne peut pas être argument template (au moins en C++ 03, il me semblait que la restriction avait été levée en C++0X, mais si j'ai raison la version de g++ que j'ai ici n'implémente pas encore la nouvelle règle).
Code :
|
Marsh Posté le 13-11-2010 à 12:25:27
Un Programmeur a écrit : |
L'analogie n'est pas bonne, mais passons. Dans l'absolu, c'est de l'overkill je te le concéde mais si le dis type à besoin d'avoir une sémantique de constante statique, ca simplifie la sauce. YMMV
Marsh Posté le 13-11-2010 à 12:26:19
Un Programmeur a écrit : Variations sur les templates, les types sont différents. En y réfléchissant, c'est pire, l'enum anonyme ne peut pas être argument template (au moins en C++ 03, il me semblait que la restriction avait été levée en C++0X, mais si j'ai raison la version de g++ que j'ai ici n'implémente pas encore la nouvelle règle). |
Ca change aussi sur les compilateurs un peu limite ou le static const int est mal géré. Ca devient rare heureusement.
Marsh Posté le 15-11-2010 à 09:34:26
Mais c'est bien sûr, la subtilité c'est de déclarer la variable en "static const" (avec un compilo qui va bien on s'entend)! Je me demande pourquoi je n'y ai pas pensé avant.
Par contre il faut déclarer celle-ci en public et y accéder directement.
Merci pour votre aide.
--pium
Marsh Posté le 12-11-2010 à 11:25:59
Bonjour,
bizarre de se retrouver face à un problème simple que je n'avais jamais eu l'occasion de rencontrer et que je n'arrive pas à résoudre !
Comment récupérer un paramètre template int?
Considérant une classe templatée sur un int et des définitions de types pour des valeurs données
Comment faire pour récupérer la valeur de N pour ces types lors de la compilation?
J'ai besoin de m'en resservir comme paramètre pour un autre template, du style
Merci !
-- pium