I'm trying to come to grips with using the boost intrusive containers, but I don't think I understand how the lifetime of hooks need to be managed. This piece of code fails the !hook.is_linked() assertion: Any pointers? Also, is there is a non-intrusive AVL tree container as part of boost? struct my_node_t { int i_; my_node_t(int i): i_(i) {} friend bool operator<(const my_node_t& lhs, const my_node_t& rhs) { return lhs.i_ < rhs.i_; } friend ostream& operator<< (ostream& os, const my_node_t& n) { return os << n.i_; } }; int main() { avltree<my_node_t> tree; vector<my_node_t> vec; for (int i = 0; i < 10; ++i) vec.push_back(my_node_t(i)); for (int i = 0; i < 10; ++i) tree.insert_unique(vec[i])); copy(tree.begin(), tree.end(), ostream_operator<my_node_t>(cout, " "); } |