Template un peu fin - C++ - Programmation
Marsh Posté le 19-02-2003 à 23:04:32
ben justement,c'est la un des problèmes des tempaltes C++, l'absence de contrainte ou l'impossibilité d'imposer un contrat.
le mieux: ta classe template tu la fait en privée, elle ne concerne que l'implémentaion, et apres dans le .h à inclure, tu propose des template instanciés tout fait
genre.
vecarray_bits.h
|
vecarray.h
|
c'est à mon avis la seule solution pour planquer ton template et emepecher une utilisation
Marsh Posté le 20-02-2003 à 08:51:15
c'est en effet une idée.
Je pense que je vais tester ca.
Merci
Marsh Posté le 20-02-2003 à 09:26:02
En s'inspirant de ceci: Why can't I define constraints for my template parameters?
Code :
|
Code :
|
Il y peut-être moyen de faire mieux.
N'oublie pas le type char...
Marsh Posté le 20-02-2003 à 09:38:08
... Ce Bjarne m'etonnera tjrs
je v digérer tout ca, et venir aux nouvelles.
Mercia tous
Marsh Posté le 20-02-2003 à 10:33:46
Ca aussi ca peut etre pratique :
http://boost.org/libs/static_assert/static_assert.htm
Marsh Posté le 20-02-2003 à 10:41:36
oui, mais ça depend de ce qu'on veut: interdire purement, ou laisser essayer
Marsh Posté le 20-02-2003 à 11:09:57
Interdire clairement, quitte à alléger les assertions si
ces Mrs de chez Apple nous sortent AltiVec II
Marsh Posté le 20-02-2003 à 11:25:50
ben alors soit utilise une méthode pour que ça passe pas à la compilation, soit utilise une technique de fourbe en planquant ton template
Marsh Posté le 19-02-2003 à 22:54:56
voila, je bosse sur une bibliotheque de calcul vectoriel utilisant l'architecture SIMD d'Altivec sur PPC G4.
Je suis en train d'encapsuler le concept de vecteur parallele dans un classe qui ressemble comme 2 gouttes d'eau a valarray de la STL.
J'utilise evidemment des templates pour pas me faire chier :
le truc ce que dans mes methodes, j'utilise les fonctions C AltiVec (vec_add, vec_madd etc ...) aui ne peuvent prendre comme argument que des types du style :
_vector signed char
_vector unsigned char
_vector signed short
_vector unsigned short
_vector signed long
_vector unsigned long
_vector float
Mon probleme :
Comment restreindre a la compialtion l'instantiation du template VecArray ?
CAD autoriser :
VecArray<float> monTab;
mais interdire
VecArray<string> truc;
qui n'a aucun sens.
Merci d'avance