Boost logo

Boost Announcement :

From: JOAQUIN LOPEZ MU?Z (joaquin_at_[hidden])
Date: 2007-04-02 11:55:28

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
- 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
- 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
- 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

Boost-announce list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at