CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] spécialisation template

godrik
godrik
Niveau 30
21 février 2007 à 17:29:32

Bonjour a tous,
je me pose actiellement des problemes de spécialisation template dans le cas ou le type spécifier a un parametre template. Un petit bout de code valant mieux qu´un long discours:

template <class T>
class toto { T a;}; //ok: toto<T> est défini

template <typename COIN>
void fnct() //ok: definition generique de fnct
{
std::cout<<"wouf"<<std::endl;
}

template<>
void fnct<int>() //ok: specialisation generique de fnct pour les entiers
{
std::cout<<"zog"<<std::endl;
}

template<>
void fnct<toto<int> >() //ok: specialisation generique de fnct pour les toto<int>
{
std::cout<<"paf"<<std::endl;
}

template < >
void fnct < toto<T> > () //erreur: "function template partial specialization ‘fnct<toto<T> >’ is not allowed"
{
}

C´est en fait le dernier qui m´interesse.
Je voudrais pouvoir ecrire une specialisation de la fonction fnct pour n´importe quel toto<T>.

Est ce que quelqu´un sait faire cela ?
Merci

godrik
godrik
Niveau 30
21 février 2007 à 17:51:02

faute de copier/coller pour le dernier il fallait lire

template < typename T >
void fnct < toto<T> > () //erreur: "function template partial specialization ‘fnct<toto<T> >’ is not allowed"
{
}

kufa
kufa
Niveau 9
21 février 2007 à 18:26:16

Effectivement tu ne peux pas faire ca.
Une possible solution est d´utiliser un parametre (ce qui parait logique, car si tu veux specialiser c´est soit que tu veux retourner un type particulier, ou travailler sur des arguments d´un type particulier):

http://rafb.net/p/JFuH5i37.html

/kUfa

godrik
godrik
Niveau 30
21 février 2007 à 18:56:38

mouais, c´est pas aussi bien fait que je ne le pensait, je suis déçu... :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment