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

  1. #1
    Expert éminent sénior

    Avatar de Francis Walter
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    2 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2012
    Messages : 2 317
    Points : 26 483
    Points
    26 483
    Par défaut Les littéraux utilisateur - Partie 1 : les littéraux préparés
    Bonjour,

    L'équipe C++ de Developpez.com vous présente un tutoriel sur les littéraux utilisateur de Andrzej Krzemieński traduit par Bousk :


    Citation Envoyé par Synopsis
    Cet article est le premier d'une série de trois au sujet d'une nouveauté du langage : la possibilité de définir des littéraux utilisateur.

    Cet article traite des littéraux en général, le but et l'utilité des littéraux utilisateur, leurs limites et les autres possibilités offertes en C++ pour un objectif similaire.
    Vous avez envie de contribuer au sein du Club Developpez.com ?

    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, ...etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    novembre 2004
    Messages
    2 740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2004
    Messages : 2 740
    Points : 2 652
    Points
    2 652
    Par défaut
    Super !

    J'avais justement besoin de ce genre de trucs. J'avais commencé avec Boost.Units, mais ça me semblait un peu lourd.

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 259
    Points : 10 777
    Points
    10 777
    Par défaut
    C'est complémentaire. boost.unit fournit le framework qui définit déjà comment manipuler les unités SI. Avec les user-defined literals, on a un nouveau moyen (à écrire car que je crois pas que boost.units les ait intégrés) pour écrire des valeurs dans des unités SI.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre actif Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués communicants
    Inscrit en
    mars 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués communicants

    Informations forums :
    Inscription : mars 2010
    Messages : 130
    Points : 297
    Points
    297
    Par défaut
    J'ai justement testé les litteraux utilisateurs mais mon IDE (Qt Creator) n'aime pas ça.

    Voici le code que j'ai testé:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    class Distance
    {
        private:
     
            uint16_t distance;
     
        public:
     
            explicit constexpr Distance(uint16_t distance) : distance(distance) {}
    };
     
    constexpr Distance operator "" _m(unsigned long long distance)
    {
        return Distance(static_cast<uint16_t>(distance * 100));
    }
     
    constexpr Distance operator "" _cm(unsigned long long distance)
    {
        return Distance(static_cast<uint16_t>(distance));
    }
     
    constexpr Distance operator "" _mm(unsigned long long distance)
    {
        return Distance(static_cast<uint16_t>(distance / 10));
    }
     
    int main()
    {
        Distance test = 20_cm;
        return 0;
    }
    J'ai cette erreur sur les lignes des surchages d'opérateur :

    expected a declaration
    Et dans la fonction main() :

    expected token `;` got `test`
    Une idée?

  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2011
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2011
    Messages : 619
    Points : 2 955
    Points
    2 955
    Par défaut
    L'IDE, tu t'en fous, c'est le compilateur qui importe. l'IDE n'est qu'une aide plus ou moins synchronisé avec le compilateur, mais il ne le remplace pas.

    Si cela devient gênant, il y a peut-être un macro connu par l'IDE pour qu'il n'analyse pas les parties de code problématique.

  6. #6
    Membre actif Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués communicants
    Inscrit en
    mars 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués communicants

    Informations forums :
    Inscription : mars 2010
    Messages : 130
    Points : 297
    Points
    297
    Par défaut
    Citation Envoyé par jo_link_noir Voir le message
    Si cela devient gênant, il y a peut-être un macro connu par l'IDE pour qu'il n'analyse pas les parties de code problématique.
    Ouais c'est ça, c'est bon ça compile (encore heureux) mais c'est quand même lourd ce genre d'affichage erroné en complétion. Je sais pas sur quoi se base Qt Creator pour ça.

    EDIT:
    Apparement, c'est basé sur Clang : https://blog.qt.io/blog/2011/10/19/q...tor-and-clang/

  7. #7
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2008
    Messages : 1 505
    Points : 2 795
    Points
    2 795
    Par défaut
    Citation Envoyé par RPGamer Voir le message
    Ouais c'est ça, c'est bon ça compile (encore heureux) mais c'est quand même lourd ce genre d'affichage erroné en complétion. Je sais pas sur quoi se base Qt Creator pour ça.

    EDIT:
    Apparement, c'est basé sur Clang : https://blog.qt.io/blog/2011/10/19/q...tor-and-clang/
    Qt creator utilise son propre modèle de code C++, avec son propre parseur. Le modèle utilisant clang est encore plus ou moins en bêta (de mémoire, son problème est qu’il est beaucoup plus lent, par contre, il ne souffre pas de ce genre de défauts).

  8. #8
    Expert éminent sénior

    Avatar de Francis Walter
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    2 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2012
    Messages : 2 317
    Points : 26 483
    Points
    26 483
    Par défaut
    Citation Envoyé par white_tentacle Voir le message
    Qt creator utilise son propre modèle de code C++, avec son propre parseur. Le modèle utilisant clang est encore plus ou moins en bêta (de mémoire, son problème est qu’il est beaucoup plus lent, par contre, il ne souffre pas de ce genre de défauts).
    La version bêta en question daterait de 2011 si je ne me trompe. Y'a t-il pas eu d'évolutions depuis ?
    Vous avez envie de contribuer au sein du Club Developpez.com ?

    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, ...etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  9. #9
    Membre actif Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués communicants
    Inscrit en
    mars 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués communicants

    Informations forums :
    Inscription : mars 2010
    Messages : 130
    Points : 297
    Points
    297
    Par défaut
    Visibilement leur parseur a été mis à jour car en passant de la v 3.3 à la 3.4 mon problème est résolu.

Discussions similaires

  1. Filtrer les données utilisateurs avant de les utiliser
    Par torskint dans le forum Langage
    Réponses: 2
    Dernier message: 26/06/2015, 11h21
  2. Réponses: 7
    Dernier message: 23/09/2009, 11h02
  3. Réponses: 0
    Dernier message: 22/09/2009, 00h41
  4. Réponses: 2
    Dernier message: 31/10/2003, 17h32

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