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 :

Truc bizarre avec Boost.Phoenix


Sujet :

Boost C++

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut Truc bizarre avec Boost.Phoenix
    Salut,

    J'utilise Boost 1.43 en partant de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    namespace
    {
        struct base
        {
            virtual void method() = 0;
        };
        struct derived : base
        {
            virtual void method() {}
        };
    }
    Le code suivant ne compile pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <boost/function.hpp>
    #include <boost/spirit/home/phoenix.hpp>
    #include <boost/spirit/home/phoenix/operator/self.hpp>
     
    BOOST_AUTO_TEST_CASE( phoenix_assign_reference_to_pointer )
    {
        base* b = 0;
        derived d;
        boost::function< void( base& ) > f( boost::phoenix::ref( b ) = &boost::phoenix::arg_names::arg1 );
        f( d );
        BOOST_CHECK_EQUAL( b, &d );
    }
    Avec vc80 et vc90 l'erreur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Mat\Desktop\dev\include\boost/spirit/home/phoenix/operator/self.hpp(25) : error C2259: '`anonymous-namespace'::base' : cannot instantiate abstract class
    Avec gcc 3.4.4 cygwin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
           [cc] C:/Users/Mat/Desktop/dev/include/boost/spirit/home/phoenix/operator/self.hpp: In instantiation of `boost::phoenix::result_of_reference<<unnamed>::base&>':
    (blablabla)
           [cc] C:/Users/Mat/Desktop/dev/include/boost/spirit/home/phoenix/operator/self.hpp:25: error: cannot declare variable `boost::phoenix::result_of_reference<<unnamed>::base&>:
    x' to be of type `<unnamed>::base'
           [cc] C:/Users/Mat/Desktop/dev/include/boost/spirit/home/phoenix/operator/self.hpp:25: error:   because the following virtual functions are abstract:
    (blabla)
    A noter que sans passer par la Boost.Fonction f intermédiaire, ça compile et le test passe.
    Egalement l'équivalent en Boost.Lambda compile et passe aussi (je peux poster le code éventuellement mais j'imagine qu'on s'en fout :p).

    J'ai la berlue ou c'est une sorte de bug ?

    Merci !
    MAT.

  2. #2
    Membre chevronné
    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 : 43
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    Je pense que ca vient de comment phoenix ou function capture les valeurs. Le message comem quoi y a une instanciation d'abstract class me parait assez révélateur. Je mates en détails

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Alors du neuf ? Je crée un ticket trac, ou bien ?

    MAT.

Discussions similaires

  1. [PHP 5.3] Truc bizarre avec les dates
    Par razam dans le forum Langage
    Réponses: 4
    Dernier message: 31/03/2015, 16h46
  2. Truc bizarre avec QString
    Par chrtophe dans le forum Débuter
    Réponses: 3
    Dernier message: 30/05/2012, 15h15
  3. Pb avec boost::phoenix
    Par Tugdugal dans le forum Boost
    Réponses: 2
    Dernier message: 15/03/2010, 07h52
  4. un truc bizarre avec l'évaluateur delphi
    Par isachat666 dans le forum EDI
    Réponses: 1
    Dernier message: 07/04/2006, 14h22
  5. [C#] Truc bizarre avec DataSet
    Par bendj dans le forum ASP.NET
    Réponses: 15
    Dernier message: 13/07/2005, 19h51

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