El 09/09/2021 a las 11:28, John Emmas via Boost-users escribió:
On 08/09/2021 15:56, John Emmas wrote:
I realise there are two types of hook available for 'boost::intrusive::list' ( the list_member_hook<> and the list_base_hook<>) - so are there certain situations where one would preferable over the other?
Overnight I got told (off-list) that when 2 x classes are both declared using the 'list_base_hook<>' option, I'll get a runtime crash if I try to add the same object to both lists. In other words, this will crash at the specified line:-
class animal : public boost::intrusive::list_base_hook<> { [...] };
[...]
animals.push_back (a2); // <--- 'bulldog' works okay [...] dogs.push_back (a2); // <--- 'bulldog' crashes !!!
You're trying to insert a2 into dogs when the element is alredy inserted
into animals.
You can either remove a2 from animals beforehand:
animals.erase(Animals::s_iterator_to(a2));
or, if you mean for the elements to be allowed in both lists at the same
time, use tags:
#include