template aussi

template aussi - C++ - Programmation

Marsh Posté le 20-11-2009 à 18:52:59    

Alors voilà, je voudrais faire ça (je simplifie)

Code :
  1. #include <iostream>
  2. template <int D>
  3. int test()
  4. {
  5. return D;
  6. }
  7. int main()
  8. {
  9.   for (int i=0;i<10;i++)
  10.   {
  11.      std::cout<<test<i>()<<std::endl;
  12.   }
  13. }


Evidemment, ça marche pas? :)  :)  :)


Message édité par GrosBocdel le 20-11-2009 à 19:19:16
Reply

Marsh Posté le 20-11-2009 à 18:52:59   

Reply

Marsh Posté le 20-11-2009 à 19:52:02    

bah non, les paramètres template doivent etre connu à la compilation.
Tu peut faire un for purement statique par contre si tu veux.

 

http://codepad.org/WhbZEh5k


Message édité par Joel F le 20-11-2009 à 19:57:53
Reply

Marsh Posté le 20-11-2009 à 19:55:45    

C'est à dire?

Reply

Marsh Posté le 20-11-2009 à 19:59:32    

regarde l'exemple :o

Reply

Marsh Posté le 20-11-2009 à 20:00:51    

Ha, le fourbe, t'as édité après ma réponse  :)

Reply

Marsh Posté le 20-11-2009 à 20:39:53    

Je ne vois pas du tout où le compilo voit qu'il doit s'arrêter à 10?

Reply

Marsh Posté le 20-11-2009 à 20:47:44    

Si, j'ai vu mais c'est bizarre.

Reply

Marsh Posté le 20-11-2009 à 20:51:44    

specialisation partielle de template. Rien de bizarre

Reply

Marsh Posté le 20-11-2009 à 20:53:22    

Joel F a écrit :

specialisation partielle de template. Rien de bizarre


 
Dit comme ça c'est vrai, mais d'un autre point de vue, ça fait une espèce d'utilisation de truc qui est déclaré après.

Reply

Marsh Posté le 20-11-2009 à 21:35:34    

et ? c'est guère different d'une declaration de prototype de fonction

Reply

Marsh Posté le 20-11-2009 à 21:35:34   

Reply

Marsh Posté le 21-11-2009 à 10:05:57    

Bah ce qui me gène c'est que le compilo soit en mesure d'aller chercher la condition d'arret plus loin dans le code, alors que pour
 
struct A{
 B membre;
};
 
struct B{
...
};
il ne le fait pas...
 

Reply

Marsh Posté le 21-11-2009 à 14:08:20    

c'ets different. Pour le compilateur, les templates ne sont que des modèle de generation. Il les voit, il les enregistre mais il ne va les compiler que si il en a besoin. Et a ce moment, il les a deja tous vus.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed