I'm in the early stages of trying to understand boost::intrusive::list' so forgive me if I'm just doing something stupid!! Using VS2019 I wrote a small demo app which uses 'boost::intrusive::list_base_hook<>':-

    #include <boost/intrusive/list.hpp>
    #include <string>
    #include <iostream>

    using namespace std;

    class animal : public boost::intrusive::list_base_hook<>
    {
    public:
        animal (string n, int l) : name{move(n)}, legs{l} {}

        string name;
        int legs;
    };

    using animal_list = boost::intrusive::list<animal>;

    template<typename T>
    void print_list (const boost::intrusive::list<T>& elem)
    {
        for (const T& a : elem)
            cout << "A " << a.name << " has " << a.legs << " legs" << '\n';
    }

    int main()
    {
        animal a1{"dog", 4};
        animal a2{"spider", 6};
        animal a3{"budgie", 2};
        animal_list animals;

        animals.push_back(a1);
        animals.push_back(a2);
        animals.push_back(a3);
        print_list (animals);

        return 0;
    }

Everything runs fine and I see the expected output but I've noticed that some other developers use something called a 'list_member_hook' rather than my 'list_base_hook' - so class animal would look like this:-

    class animal
    {
     public:
        animal (string n, int l) : name{move(n)}, legs{l} {}

        string name;
        int legs;
        boost::intrusive::list_member_hook<> _animal_hook;
    };

and then later on in the program there'd be a couple of lines looking something like this:-

typedef boost::intrusive::member_hook<animal, boost::intrusive::list_member_hook<>, &animal::_animal_hook> AnimalHookOption;
    typedef boost::intrusive::list<animal, AnimalHookOption> Animals;

But when I try that here, VS2019 throws up this compiler error:-

    error C2039: 'default_list_hook': is not a member of 'animal'

Can anyone explain what I'm doing wrong??

John
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users

Reply via email to