Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1094 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Impossible, contourné] Argument par défaut d'un template par défaut

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Impossible, contourné] Argument par défaut d'un template par défaut

n°1602431
SkippyleGr​andGourou
Posté le 22-08-2007 à 15:50:31  profilanswer
 

Salut,
 
Je me demandais : est-il possible d'(ou plutôt : comment faire pour) attribuer à un template par défaut une valeur par défaut ? Genre (pour donner l'idée, mais bien sûr ça compile pas...) :

Code :
  1. template <class T=string>
  2. void print(T ligne="abc" )
  3. {
  4.      cout << ligne << endl;
  5.      return;
  6. }


 
Merci.


Message édité par SkippyleGrandGourou le 22-08-2007 à 16:30:29
mood
Publicité
Posté le 22-08-2007 à 15:50:31  profilanswer
 

n°1602450
Joel F
Real men use unique_ptr
Posté le 22-08-2007 à 16:18:32  profilanswer
 

pas avec des fonctions mais avec des classes oui :
Ca ca marche par contre :
 

Code :
  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4. void print(const string& ligne="abc" )
  5. {
  6.   cout << ligne << endl;
  7. }
  8. template<class T> void print(const T& ligne )
  9. {
  10.   cout << ligne << endl;
  11. }
  12. int main()
  13. {
  14.   print();
  15.   print(6.99);
  16.   return 0;
  17. }

Message cité 1 fois
Message édité par Joel F le 22-08-2007 à 16:18:56
n°1602453
SkippyleGr​andGourou
Posté le 22-08-2007 à 16:29:00  profilanswer
 

Joel F a écrit :

pas avec des fonctions mais avec des classes oui :

Oui, après recherche plus approfondie (le message d'erreur "default template arguments may not be used in function templates" m'avait échappé...) il semble que sur ce point encore le C++ soit mal foutu... :whistle:

 
Joel F a écrit :

Ca ca marche par contre :

Ou mieux à mon humble avis, puisque ça évite de dupliquer trop de code (le cout n'est pas mon seul but...) :

Code :
  1. template <class T>
  2. void print(T ligne)
  3. {
  4.      cout << ligne << endl;
  5.      return;
  6. }
  7. void print()
  8. {
  9.      print("abc" );
  10.      return;
  11. }
 

Message cité 1 fois
Message édité par SkippyleGrandGourou le 22-08-2007 à 16:29:20
n°1602475
Joel F
Real men use unique_ptr
Posté le 22-08-2007 à 16:54:15  profilanswer
 

const T& s'il te plait v_v

n°1602521
++fab
victime du syndrome IH
Posté le 22-08-2007 à 17:50:10  profilanswer
 

SkippyleGrandGourou a écrit :

Oui, après recherche plus approfondie (le message d'erreur "default template arguments may not be used in function templates" m'avait échappé...) il semble que sur ce point encore le C++ soit mal foutu... :whistle:


 
Il s'est amélioré dernièrement :)
 

Code :
  1. #include <string>
  2. #include <iostream>
  3. template <class T = std::string>
  4. void print( T const& ligne = "abc" )
  5. {
  6.     std::cout << ligne << std::endl;
  7. }
  8. int main()
  9. {
  10.     print();
  11.     print( "toto" );
  12.     print( 3.14 );
  13. }


 
$g++ -dumpversion
4.3.0
 
$g++ -std=c++0x toto.cpp && ./a.out
abc
toto
3.14

n°1602527
SkippyleGr​andGourou
Posté le 22-08-2007 à 17:56:51  profilanswer
 

Ah oui, mais ça va pas être possible : g++ 4.0.3 non upgradable (FC4 + méga flemme d'installer g++ par les sources...), et code devant être au final compatible avec g++ 3.2.3...  :whistle:  
 
M'enfin, j'y aurai peut-être accès dans quelques années... ;)

n°1602549
Joel F
Real men use unique_ptr
Posté le 22-08-2007 à 18:32:43  profilanswer
 

++fab a écrit :


Il s'est amélioré dernièrement :)


 
stable le 4.3 ?

n°1602606
Un Program​meur
Posté le 22-08-2007 à 21:38:10  profilanswer
 

Joel F a écrit :


 
stable le 4.3 ?


 
Pas encore releasé :-)

n°1602612
++fab
victime du syndrome IH
Posté le 22-08-2007 à 21:54:33  profilanswer
 

Joel F a écrit :


stable le 4.3 ?


il est en fin de 'stage 1', il entre en stage 2 mi septembre d'après Mark Mitchell.
comme il y a pas mal de changements profonds, et d'après certains commentaires, on peut s'attendre à voir un gcc à peu près du même accabit que 4.0, et il se pourrait que son successeur ait plus de succès -- comme 4.1.x envers 4.0.x, mais c'est de la pure spéculation. (Tout ça si la GPLv3 ne les obligent pas à releaser 4.3 prématurément, mais je n'ai pas eu le fin mot de l'histoire)

 

Stable ? Ce sont les distrib qui le décide.


Message édité par ++fab le 22-08-2007 à 23:40:05
n°1602739
Joel F
Real men use unique_ptr
Posté le 23-08-2007 à 09:58:56  profilanswer
 

me semblait bien qu'il etait pas frais encore :) Merci pour les infos :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Impossible, contourné] Argument par défaut d'un template par défaut

 

Sujets relatifs
Colle C++ : pb de template abstraitTemplate & class
rétablir la gestion des erreurs par défaut dans accessSQL Loader - Insérer une valeur par défaut
Impossible de voir le texte d'un "select"appel javascript impossible dans page appelée en ajax
Impossible d'afficher une image ?Modifier une valeur par défaut
prévisualisation impossiblePHP + Xajax + Html : code crado, solution : Moteur de template ?
Plus de sujets relatifs à : [Impossible, contourné] Argument par défaut d'un template par défaut


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR