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

Boost C++ Discussion :

Débuts avec boost::proto


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Par défaut Débuts avec boost::proto
    Bonjour.

    Je débute les tutos avec boost::proto et j'avais une question très simple.
    J'ai modifié un peu le helloworld du tout premier exemple :
    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
    #include <iostream>
    #include <boost/proto/proto.hpp>
    #include <boost/typeof/std/ostream.hpp>
    using namespace boost;
     
    proto::terminal< std::ostream & >::type cout_ = { std::cout };
     
    template< class Expr >
    void evaluate( Expr const & expr )
    {
        proto::default_context ctx;
        proto::eval(expr, ctx);
    }
     
    int main()
    {
        evaluate( cout_ << "hello" << ',' << " world"<<"\n");
        int a;
        std::cout<<"type a = ";
        std::cin>>a;
        evaluate( cout_ << "hello" << ',' << " world"<< "and" <<" a = " << a <<"\n");
        return 0;
    }
    Le programme se déroule comme un programme "normal", sans accroche. Cependant, j'ai un peu de mal à comprendre ce qui est fait à la compilation et ce qui est fait à l'exécution (l'avantage de boost::proto, si j'ai bien suivi c'est justement de pouvoir faire entre autres du précalcul à la compilation).

    Est-ce que le main compilé est équivalent à celui là ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main()
    {
        std::cout<< "hello, world\n";
        int a;
        std::cout<<"type a = ";
        std::cin>>a;
        std::cout<< "hello, world and a = "<<a<<"\n";
        return 0;
    }
    C'est à dire est-ce que boost::proto a concaténé autant que faire se peut les chevrons des cout (même si le compilo l'aurait peut être fait de lui-même) ?

    Merci.

  2. #2
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    Oui mais seulement au moment du evaluate; la chaine d'appel pourrais etre stocker dans un objet du bon type et trimballer ailleurs.

Discussions similaires

  1. Début avec BIRT : page affichée sans les data
    Par Darkrix dans le forum BIRT
    Réponses: 2
    Dernier message: 18/09/2006, 11h18
  2. probleme de compilation avec boost
    Par doof dans le forum Bibliothèques
    Réponses: 7
    Dernier message: 07/06/2005, 21h38
  3. Calculer un inverse de matrice avec boost?
    Par Clad3 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 02/06/2005, 18h38
  4. Mes premiers débuts avec Dev-C++ : ca bloque !
    Par fab56 dans le forum Dev-C++
    Réponses: 6
    Dernier message: 20/02/2005, 16h24
  5. probleme avec boost et devcpp
    Par Krost dans le forum Dev-C++
    Réponses: 12
    Dernier message: 02/01/2005, 19h11

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