+ Répondre à la discussion Actualité déjà publiée
  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 487
    Points
    26 487

    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 690
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2004
    Messages : 2 690
    Points : 2 499
    Points
    2 499

    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.
    VDS "The C++ Standard Library" (Josuttis) -> 20 €

  3. #3
    Expert éminent
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 126
    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 126
    Points : 9 910
    Points
    9 910

    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 : 28
    Localisation : Suisse

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

    Informations forums :
    Inscription : mars 2010
    Messages : 130
    Points : 296
    Points
    296

    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 chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2011
    Messages
    479
    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 : 479
    Points : 2 018
    Points
    2 018

    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 : 28
    Localisation : Suisse

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

    Informations forums :
    Inscription : mars 2010
    Messages : 130
    Points : 296
    Points
    296

    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 765
    Points
    2 765

    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 487
    Points
    26 487

    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 : 28
    Localisation : Suisse

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

    Informations forums :
    Inscription : mars 2010
    Messages : 130
    Points : 296
    Points
    296

    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, 10h21
  2. Réponses: 7
    Dernier message: 23/09/2009, 10h02
  3. Réponses: 0
    Dernier message: 21/09/2009, 23h41
  4. Réponses: 2
    Dernier message: 31/10/2003, 16h32

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