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
#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::_animal_hook>
AnimalHookOption;
typedef boost::intrusive::list 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