IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

struct template overloading


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut struct template overloading
    Bonjour à tous,

    Je me demandais pourquoi on ne pouvait pas faire ça en C++ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    template <int v1>
    struct weight_policy
    {
      typedef typename boost::mpl::vector_c<int, v1> weight;
    };
     
    template <int v1, int v2>
    struct weight_policy
    {
      typedef typename boost::mpl::vector_c<int, v1, v2> weight;
    };
    Il s'agirait juste d'un overloading de paramètres template d'une structure.

    Si c'est effectivement impossible, pourquoi ? Et quelles seraient les solutions alternatives ?

    Merci de votre aide.

  2. #2
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    J'ai pu avoir la solution par d'autres moyens. Il faut faire une "forward declaration" de la structure avec X arguments initialisés par défaut à une valeur invalide et puis on spécialise. Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    template<int weight0, int weight1 = invalid_weight, int weight2 = invalid_weight,  /* repeat some pp
    constant # of times, e.g., BOOST_CHECK_LIMIT_WEIGHTS times */, int weight_n = invalid_weight >
    struct weight_policy;
     
    template< int weight0 >
    struct weight_policy< weight0 >
    { /* definition */ };
     
    template< int weight0, int weight 1 >
    struct weight_policy< weight0, weight1 >
    { /* definition */ };
     
    // Use Boost PP repeat to generate the N differents specialisation.
    J'espère que ça pourra en aider certains

    A bientôt

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    C'est la base de la spécialisation de templates : il y a deux choses à savoir : la syntaxe qui doit être utilisée, et le fait qu'on ne peut pas spécialiser quelque chose qui n'a pas été déclaré.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/10/2009, 14h47
  2. Attribut template d'un typedef struct
    Par Thiby dans le forum C++
    Réponses: 6
    Dernier message: 25/07/2009, 07h57
  3. Réponses: 6
    Dernier message: 12/06/2009, 10h54
  4. Réponses: 3
    Dernier message: 29/03/2009, 10h21
  5. Pb. bizarre avec g++ et une "struct template"
    Par mchk0123 dans le forum C++
    Réponses: 11
    Dernier message: 05/05/2008, 16h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo