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

C++ Discussion :

sp�cialisation de template avec aucun argument : se passer des <>


Sujet :

C++

  1. #1
    Membre confirm�
    Homme Profil pro
    D�veloppeur du dimanche
    Inscrit en
    F�vrier 2013
    Messages
    154
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur du dimanche

    Informations forums :
    Inscription : F�vrier 2013
    Messages : 154
    Par d�faut sp�cialisation de template avec aucun argument : se passer des <>
    Bonjour

    J'ai une template struct que je sp�cialise, dans le cas o� aucun argument n'est pass� en param�tre du template :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    template <typename...Ts>
    struct Struct 
    {   
        int a;
    };
     
    template <>
    struct Struct<>
    {
        int b;
    };
    Quand je d�clare les diff�rentes versions dans mon main, �a donne :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    Struct<int,char> a;
    Struct<> b;
    Mais je ne trouve pas �a tr�s beau, j'aimerais pouvoir �crire :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    Struct<int,char> a;
    Struct b;
    Je me disais qu'en passant par un alias je pourrais faire �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    template <typename...Ts>
    using TMP = Struct<Ts...>;
     
    using TMP = Struct<>;
    Mais en fait non X) Pas moyen non plus de faire la m�me chose en d�clarant deux struct : l'une template et l'autre non. Pourtant, j'aimerais vraiment conserver le m�me nom ! Et je vais pas passer par une macro, quand m�me

    Quelqu'un aurait une solution ?

    Merci !

  2. #2
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2012
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2012
    Messages : 788
    Par d�faut
    Bonjour

    Si j'ai bien compris (ma lecture en diagonale), ton code sera valide en C++17 (?) (d�duction automatique des types template dans le constructeur) mais je n'ai pas v�rifi�.

    Sinon, en C++11, on passe g�n�ralement par une fonction. �a change le coding style et dans ton cas c'est plus verbeux.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // g++ -Wall -Wextra -Wconversion -Wsign-conversion -Ofast -std=c++11 -pedantic -fopenmp main.cpp -o main && ./main
     
    #include <iostream>
     
    template <class T = int>
    struct test_t
    { };
     
    template <class T = int, class ... args_t>
    test_t<T> make_test(args_t const & ... args)
    {
        return test_t<T>(args...);
    }
     
    int main()
    {
        test_t<> a;
        auto b = make_test();
     
        return 0;
    }
    J'ai �cris la version avec un variadic template (avec une const &) mais ce n'est pas forc�ment utile et je n'ai pas test�...

  3. #3
    Membre confirm�
    Homme Profil pro
    D�veloppeur du dimanche
    Inscrit en
    F�vrier 2013
    Messages
    154
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur du dimanche

    Informations forums :
    Inscription : F�vrier 2013
    Messages : 154
    Par d�faut
    Yep, � peu pr�s quelque chose comme �a

    Merci de ton aide !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 9
    Dernier message: 24/03/2011, 21h54
  2. Passer des argument avec le manifeste java
    Par hotward dans le forum G�n�ral Java
    R�ponses: 3
    Dernier message: 09/09/2009, 06h23
  3. passer des arguments avec Runtime.getRuntime().exec;
    Par firgon dans le forum D�buter avec Java
    R�ponses: 0
    Dernier message: 07/11/2008, 07h16
  4. Sp�cialisation de template parametre avec Enum
    Par 3DArchi dans le forum Langage
    R�ponses: 4
    Dernier message: 24/09/2008, 15h21
  5. [Configuration] Impossible de passer des arguments avec require
    Par black is beautiful dans le forum EDI, CMS, Outils, Scripts et API
    R�ponses: 2
    Dernier message: 06/10/2007, 21h58

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