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

  FORUM HardWare.fr
  Programmation
  C++

  spécialisation de fonctions membres (template) d'une classe template

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

spécialisation de fonctions membres (template) d'une classe template

n°950087
++fab
victime du syndrome IH
Posté le 10-01-2005 à 15:24:43  profilanswer
 

Bonjour,
 
Comme énoncé dans le sujet, le code suivant (pour l'exemple) ne compile pas (sous gcc-3.3.3, gcc-3.3.4 et gcc-3.4.3) :
 

Code :
  1. template <class T>
  2. struct A
  3. {
  4.     template <int N>  int f();
  5. };
  6. template <class T>
  7. template <>
  8. int A<T>::f<0>()
  9. {
  10.     return 1;
  11. }
  12. template <class T>
  13. template <int N>
  14. int A<T>::f()
  15. {
  16.     return N * f<N-1>();
  17. }


 
Si la classe A n'est pas un modèle, ça fonctionne bien sur.
Voila, je soumet ce probleme à votre sagacité, je sèche.
Merci.


Message édité par ++fab le 10-01-2005 à 15:25:51
mood
Publicité
Posté le 10-01-2005 à 15:24:43  profilanswer
 

n°950275
el muchach​o
Comfortably Numb
Posté le 10-01-2005 à 19:42:56  profilanswer
 

Houla, ce genre d'exemple pousse les compilos C++ dans leurs derniers retranchements là.  
 
Je n'ai jamais essayé ce genre de code, mais une fonction template dans un template de classe, je ne suis pas sûr que ce soit possible.

n°950282
++fab
victime du syndrome IH
Posté le 10-01-2005 à 19:49:39  profilanswer
 

el muchacho a écrit :

Houla, ce genre d'exemple pousse les compilos C++ dans leurs derniers retranchements là.  
 
Je n'ai jamais essayé ce genre de code, mais une fonction template dans un template de classe, je ne suis pas sûr que ce soit possible.


 
une fonction template dans une classe template, ça ne pose aucun probleme.
une spécialisation devrait passer normalement ...  
fais chier  :o  
 
 

n°950289
cricri_
Posté le 10-01-2005 à 19:52:22  profilanswer
 

Taz va bien trouver la solution ... ;)

n°950313
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 10-01-2005 à 20:14:38  profilanswer
 

pour info, sous Visual C++ 2003, ça déclenche l'erreur suivante :
 

Citation :


error C2768: 'A<T>::f' : utilisation non conforme d'arguments de modèle explicite


 


[Compiler Error C2768]
 
'fonction' : utilisation non conforme d'arguments de modèle explicite
 
Le compilateur n'a pas pu déterminer si une définition de fonction devait être une spécialisation explicite d'un modèle de fonction ou si la définition de fonction devait être une nouvelle fonction.
 
Cette erreur a été introduite dans Visual Studio .NET 2003, avec les améliorations de conformité du compilateur.
 
Pour plus d'informations, consultez Summary of Compile-Time Breaking Changes.
 
L'exemple suivant génère l'erreur C2768 :
 
// C2768.cpp
// compile with: /LD
template<typename T>
void f(T)
{
}
 
// template<>
void f<int>(int)
// Uncomment the template<> line to make an explicit specialization or
// try the following to make a global nontemplate function overload
// void f(int)
{   // C2768
}



---------------
J'ai un string dans l'array (Paris Hilton)
n°950319
Taz
bisounours-codeur
Posté le 10-01-2005 à 20:17:39  profilanswer
 

ben c'est pas légal, voilà tout

n°950347
++fab
victime du syndrome IH
Posté le 10-01-2005 à 20:57:36  profilanswer
 

mouais

n°950430
++fab
victime du syndrome IH
Posté le 10-01-2005 à 22:12:08  profilanswer
 

Taz a écrit :

ben c'est pas légal, voilà tout


 
Taz, y a t'il un point précis du standard qui infirme la validité de ce code ?
J'ai trouvé nulle part.


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

  spécialisation de fonctions membres (template) d'une classe template

 

Sujets relatifs
Fichiers et fonctionsImporter un classe existante dans une jsp
fonctions systemesExport de fonctions EXE -> DLL et DLL -> EXE
Classe de log basée sur ostream[QT] affichage de fenêtre et problème de classe
[résolu][C++]Passage de paramètres au constructeur d'une classe mèreProblème syntaxique de définition de template pour une fonction membre
Initialisation d'instance de classe[VBA Excel] [Résolu] Problème de librairies de fonctions vba
Plus de sujets relatifs à : spécialisation de fonctions membres (template) d'une classe template


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