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 :

Les littéraux utilisateur - Partie 1 : les littéraux préparés


Sujet :

C++

  1. #1
    Expert éminent sénior

    Avatar de Francis Walter
    Homme Profil pro
    Développeur informatique
    Inscrit en
    February 2012
    Messages
    2 315
    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 : February 2012
    Messages : 2 315
    Points : 26 895
    Points
    26 895
    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
    November 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : November 2004
    Messages : 2 764
    Points : 2 661
    Points
    2 661
    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
    August 2003
    Messages
    5 272
    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 : August 2003
    Messages : 5 272
    Points : 10 962
    Points
    10 962
    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 averti Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    March 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : March 2010
    Messages : 168
    Points : 395
    Points
    395
    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 expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    June 2011
    Messages
    737
    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 : June 2011
    Messages : 737
    Points : 3 616
    Points
    3 616
    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 averti Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    March 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : March 2010
    Messages : 168
    Points : 395
    Points
    395
    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
    November 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : November 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    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
    February 2012
    Messages
    2 315
    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 : February 2012
    Messages : 2 315
    Points : 26 895
    Points
    26 895
    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 averti Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    March 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : March 2010
    Messages : 168
    Points : 395
    Points
    395
    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