Afficher un message
Vieux 27/03/2008, 03h55   #1
Sylvain
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut instantiation template


instantier ou pas, d'ailleurs c'est aussi la question.

ceux qui m'ont lu au moins une fos le savent, j'adore les templates.

j'inclus pour la 1ière fois une librairie à base de template dans un de
mes projets (librairie Crypto++ vers. 5.5.2 compilé par VC2005/cl.14)

je n'ai pour l'heure qu'inclut tous les src de la distrib.,
je n'instancie pas dans mes propres src la moindre classe,
le linkeur m'indique tout de même 485 "symbole externe non résolus"
(désespoir ...)

pris au hasard, j'ai par exemple:

virtual class CryptoPP::Integer
CryptoPP::AbstractRing<class CryptoPP::Integer>::CascadeExponentiate(
class CryptoPP::Integer const &, [...]) const

je n'ai pas localisé avec certitude qui utilise qlq part un
AbstractRing<Integer> mais le template AbstractRing est comme
son nom l'indique abstrait (contient des virtuelles pures),
je doute donc que ce template soit vraiment utilisé comme tel,
ou la compile aurait du le refuser, non ?

d'où:
1- si le code template est généré que si il est utilisé, pourquoi le
compilo trouve du code à inclure alors que je n'ai aucune référence,
et pourquoi dans le même temps oublie-t-il la moitié de ce qu'il
génère quand même ?
2- comment forcer la génération de tout le code, si l'hypothèse 1
est exacte.

3- criez pas, je sais que mon compte-rendu n'est pas clair, mais je
ne comprends clairement rien à ces instantiations aléatoires de code.

merci pour toute aide.
Sylvain.
  Réponse avec citation
 
Page generated in 0,05946 seconds with 9 queries