Можно ли получить следующий узел / элемент непосредственно из узла / элемента? Вот так:
struct Data{
boost::intrusive::list_member_hook<> node;
Data* get_next(){
node.get_next() ???
}
}
У многих интрузивных контейнеров есть статическая функция-член s_iterator_to
получить итератор непосредственно из значения.
Таким образом, вы можете получить итератор, а затем использовать интерфейс итератора:
struct Data{
boost::intrusive::list_member_hook<> node;
inline Data* get_next();
}
namespace bis = boost::intrusive;
using List = bis::list<Data,
bis::member_hook<Data, bis::list_member_hook<>, &Data::node>
>;
Data* Data::get_next() {
return &*++List::s_iterator_to(*this);
}
Других решений пока нет …