Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Nouveau Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : décembre 2011
    Messages : 42
    Points : 28
    Points
    28

    Par défaut [Boost MPL] Les integral sequence wrappers ?

    Bonsoir,

    Je découvre tout juste Boost MPL et j'ai déjà du mal à comprendre certaines choses.

    J'ai commencé le tutoriel (Tutorial: Metafunctions and Higher-Order Metaprogramming) par le début et donc par ce qui concerne l'analyse dimensionnelle.
    Je comprends à peu près comment ça marche mais là ou je bloque c'est quand ça parle de "integral sequence wrappers" (l'anglais ne m'aidant pas...)

    Pourquoi ce sont des "integral sequence wrappers" qui sont utilisées pour représenter des dimensions ?
    On utilise des boost::mpl::vector_c pour représenter les dimensions. Quels sont les avantages par rapport à un simple vector ?

    (Car j'ai l'impression que les "integral" et les "wrappers" sont souvent utilisés dans Boost MPL)

    Merci.

  2. #2
    Membre Expert Avatar de Flob90
    Homme Profil pro Florian Blanchet
    Etudiant en Optique
    Inscrit en
    août 2004
    Messages
    1 202
    Détails du profil
    Informations personnelles :
    Nom : Homme Florian Blanchet
    Âge : 24
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Etudiant en Optique

    Informations forums :
    Inscription : août 2004
    Messages : 1 202
    Points : 2 474
    Points
    2 474

    Par défaut

    Bonsoir,

    Pouvez-vous donner le lien du tutorial ?

    On utilise des boost::mpl::vector_c pour représenter les dimensions. Quels sont les avantages par rapport à un simple vector ?
    mpl::vector_c est l'équivalent d'un std::vector<int> mais à la compilation, c'est tout l'objectif de MPL, créer l'équivalent à la compilation de ce qui peut exister à l’exécution.
    "We can solve any problem by introducing an extra level of indirection" Butler Lampson

    "N'importe quel problème peut être résolu en introduisant un niveau d'indirection supplémentaire" Butler Lampson (traduction libre)

  3. #3
    Nouveau Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : décembre 2011
    Messages : 42
    Points : 28
    Points
    28

    Par défaut

    Bonjour,

    Oui voilà le lien du tuto (c'est celui de la doc) : http://www.boost.org/doc/libs/1_52_0...imensions.html


    mpl::vector_c est l'équivalent d'un std::vector<int> mais à la compilation, c'est tout l'objectif de MPL, créer l'équivalent à la compilation de ce qui peut exister à l’exécution.
    Ah d'accord je comprends mieux. Après tout c'est vrai que boost mpl est une bibliothèque pour la métaprogrammation.
    Cela permet de faire de l'analyse dimensionnelle à la compilation.

    Et le reste (integral sequence wrappers, int_<N>, etc...) c'est ce qui est utilisé en interne par la bibliothèque pour permettre d'utiliser des vectors à la compilation (vector_c) ?

  4. #4
    Membre Expert Avatar de Flob90
    Homme Profil pro Florian Blanchet
    Etudiant en Optique
    Inscrit en
    août 2004
    Messages
    1 202
    Détails du profil
    Informations personnelles :
    Nom : Homme Florian Blanchet
    Âge : 24
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Etudiant en Optique

    Informations forums :
    Inscription : août 2004
    Messages : 1 202
    Points : 2 474
    Points
    2 474

    Par défaut

    Cela permet de faire de l'analyse dimensionnelle à la compilation.
    Oui, enfin c'est qu'un exemple, on peut en trouver d'autre.

    Et le reste (integral sequence wrappers, int_<N>, etc...) c'est ce qui est utilisé en interne par la bibliothèque pour permettre d'utiliser des vectors à la compilation (vector_c) ?
    vector_c c'est "juste" un raccourci :
    Code :
    1
    2
     
    mpl::vector_c<T,a,b,c,d> = mpl::vector<mpl::integral_c<T,a>,mpl::integral_c<T,b>,mpl::integral_c<T,b>,mpl::integral_c<T,b>>
    De la même manière, int_ est un "raccourci" pour (*) :
    Code :
    1
    2
     
    mpl::int_<a> = mpl::integral_c<int,a>
    (*) C'est pas écrit en tant que raccourci dans le "code", mais c'est sémantiquement équivalent.
    "We can solve any problem by introducing an extra level of indirection" Butler Lampson

    "N'importe quel problème peut être résolu en introduisant un niveau d'indirection supplémentaire" Butler Lampson (traduction libre)

  5. #5
    Nouveau Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : décembre 2011
    Messages : 42
    Points : 28
    Points
    28

    Par défaut

    D'accord c'est en fait plein de raccourcis qui facilitent le code. Il faut que je lise la doc en même temps.

    Merci pour la réponse.

  6. #6
    Expert Confirmé
    Homme Profil pro Pierre
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    1 833
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre
    Localisation : France

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

    Informations forums :
    Inscription : juin 2007
    Messages : 1 833
    Points : 3 798
    Points
    3 798

    Par défaut

    Citation Envoyé par SalutAVous Voir le message
    Il faut que je lise la doc en même temps.
    Encore mieux, il faut que tu lises la doc AVANT.
    Ce n'est pas pour rien que tu passes ton permis avant de conduire, ou que tu apprends à marcher avant de faire du vélo…
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • La plus sotte des questions est celle qu'on ne pose pas.

    Pour faire des graphes, essayez yEd.

  7. #7
    Nouveau Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : décembre 2011
    Messages : 42
    Points : 28
    Points
    28

    Par défaut

    Citation Envoyé par leternel Voir le message
    Encore mieux, il faut que tu lises la doc AVANT.
    Ce n'est pas pour rien que tu passes ton permis avant de conduire, ou que tu apprends à marcher avant de faire du vélo…

    C'est vrai. En général je préfère faire des tutos avant d'attaquer la doc, histoire de ne pas trop être "dépaysé". Mais en fait c'est pas toujours la meilleure façon de faire.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •