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 confirmé

    Avatar de Francis Walter
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 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 : Février 2012
    Messages : 2 315
    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.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    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 confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    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 287
    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 expérimenté Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    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
    Juin 2011
    Messages
    752
    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 : 752
    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 expérimenté Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    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 Expert
    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
    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 confirmé

    Avatar de Francis Walter
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 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 : Février 2012
    Messages : 2 315
    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 ?

  9. #9
    Membre expérimenté Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    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