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 :

Comparaison de deux unsigned int variadic templates à la compilation


Sujet :

Langage C++

  1. #1
    Membre habitué
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Points : 176
    Points
    176
    Par défaut Comparaison de deux unsigned int variadic templates à la compilation
    Bonjour.

    Afin de faire de la surcharge d'opérateurs de façon "clean" à l'intérieur d'une classe variadic template du style template<unsigned int... TDIM> MyClass, j'aimerai pouvoir comparer deux TDIM... (appelés dans la suite TDIM... et TDIM0...). Il me faut donc "quelque chose" qui me renvoie true si et seulement si :
    • sizeof...(TDIM) == sizeof...(TDIM0)

    • ET TDIM[0] == TDIM0[0], TDIM[1] == TDIM0[1], ..., TDIM[n] == TDIM0[n]
    .

    Je pense qu'une structure "Helper" serait toute indiquée. Je pense à quelque chose du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    template<unsigned int... TDIM, unsigned int... TDIM0> struct HelperCheckDimensions
    {
        static const bool ok = /* SOMETHING */
    };
    Le but est au final de pouvoir écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static_assert(HelperCheckDimensions<TDIM..., TDIM0...>::ok, "ERROR : Dimensions are different !");
    Comment faire cela ?

    Merci beaucoup

    EDIT : Il y a un problème dans template<unsigned int... TDIM, unsigned int... TDIM0> struct HelperCheckDimensions parce que le compilateur va être incapable de scinder TDIM et TDIM0. Donc quel est le meilleur moyen de pouvoir faire mon static_assert ?

  2. #2
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Si je te suggere comme syntaxe d'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DimChecker<L0, L1, L2>::With<R0, R1, R2>::ok
    tu peux remplir les trous?
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Discussions similaires

  1. template specialization : const? unsigned? int(*|&)?
    Par ctxnop dans le forum Langage
    Réponses: 3
    Dernier message: 30/01/2014, 16h17
  2. Réponses: 1
    Dernier message: 30/07/2013, 21h01
  3. Convertir un UNSIGNED INT en deux UNSIGNED CHAR
    Par petitnul12 dans le forum C
    Réponses: 36
    Dernier message: 03/04/2013, 22h09
  4. Réponses: 10
    Dernier message: 16/06/2010, 18h12
  5. Réponses: 5
    Dernier message: 06/10/2003, 17h49

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