I'm pleased to announce that Ion Gaztañaga's Intrusive library has been accepted into Boost. Prior to its inclusion in Boost, the author is encouraged to address several issues raised during the review, a summary of which is given below. A total of 14 full reviews were received, all of them positive. Additionally, other members did not submit full reviews but expressed their support for the library. One Boost member raised some concerns about the usefulness of the library; I hope these concerns have been satisfactorily addressed by those review participants who explained their current and potential usage scenarios for Boost.Intrusive. This has shown that more movitational material need to be provided in the documentation introduction and in the form of full-fledged examples. Thank you to Ion Gaztañaga for all the hard work involved in creating a Boost library, to Olaf Krzikalla, who wrote the first versions of this piece of work, and to all the participants in the review. The list of issues to be addressed follows. Feel free to comment if you detect some error or omission from my part. List of issues to be addressed prior to inclusion of the Intrusive library into Boost: * Documentation - Provide a motivating introduction about usefulness of Boost.Intrusive. - Add some hello world motivating examples. - Class names linked to their section in the reference (except in code due to Quickbook limitations). - Document iterator and const_iterator as part of the container interfaces. - Add overview of iterator validity rules. - Document usage before concepts. - Improve concepts part. - Provide container concepts à la STL. - Add performance section. - Add quick guide to docs. - Make the tests more comprehensive. - Add examples section. - State clearly the purpose of the lib in the introduction. - Add more examples using the different hooks. - State in docs the possibility that tags be incomplete types. - State in docs the fact that Boost.Intrusive does not support shared_ptr's. - Document the fact that member hooks rely on non-standard implementation techniques. * Naming - Change Destroyer to a more suitable name (e.g. Sink or Disposer), rename member functions accordingly. - Rename current() as iterator_to(). - Rename [s]list_algorithms as circular_[s]list_algorithms. - Drop the 'i' prefix from the names of containers. - Rename linked() as is_linked(). - Rename assign_and_destroy() as destroy_and_assign(). * Interface improvements - Study ways to simplify the usage syntax of hooks. - Add a default value to Tag. - Member hooks shouldn't be parameterized on the host class type. - Make hooks assignment operator a no-op. - bucket_size() y bucket() should be const. - Provide cbegin(), cend() etc. - Add *_fwd.hpp headers. - Fuse autolink and regular/safe hooks into one class whose second parameter is a category class. * Implementation improvements - Iterators to be implemented with iterator_facade. - Use Boost.Concept for concept checking if compilation times are not severely affected. - Extend bucket primes table to 64 bits. - Use template trick to avoid direct use std::size_t in template parms of containers, thus pulling the std namespace in via ADL. - Use Watanabe's version of swap_nodes() for ilist. - Use insert_after() in clone_from(). - Reimplement clone_from() to not delete partially constructed data on exception. - Investigate bug with member hooks and virtual inheritance. * Extensions and issues to be considered in the future - Order-statistics tree. - Study other libraries for ideas: DOL, PTL, jjLib. - Study feasibility of implementing a "destroy multihooked element when completely unlinked" mode. - Investigate use of two-way pointers with Boost.Intrusive. - Consider a shift() member function for lists and slists. - Additional slist-like container with a pointer-to-last member to make swapping constant time. The Review Manager, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo