Hello,
For those who are following the development of this lib, I'd like
to announce that the
release version of Boost.PolyCollection for Boost 1.65 is already
committed to the master
branch of Boost.
Much of the to-do list prepared by Ion at the end of the review
has been implemented. The
main features left as roadmap are listed at:
http://www.boost.org/doc/libs/master/doc/html/poly_collection/future_work.html
As for the improvements already included, let me comment on what
I feel are the most
important:
* The implementation has been refactored to avoid internal
virtual calls at places where
the type of the segment involved is known at compile time. Also,
segment lookup (the
process to get to the segment for U from typeid(U)) has been
greatly sped up by means
of a std::type_info* cache. These two improvements result in a
combined reduction of
around 25-30% in insertion times. There's an API breaking change
though: no longer
is std::type_index used and const std::type_info &'s have to
be directly provided
instead --this is likely to go unnoticed by those of you already
using the lib.
* Polymorphic collections now satisfy standard requirements on
allocator use as stated
in [container.requirements.general]/3 (or,
more precisely, the natural interpretation for
polymorhpic containers of this clause). This is explicitly
described in the reference. As a
result, polymorphic collections can now use
std::scoped_allocator_adaptor without any
problem.
* Added segment(typeid(U))/segment<U>() convenience
funtions returning a range
object over the selected segment. This allows us to write:
for(const auto&
x:c.segment(typeid(warrior))){
...
}
* Collection-level max_size() and capacity()
have been removed as I didn't seem to find
sensible semantics for them. Segment-level max_size() and
capacity() are kept, of course.
* Hopefully the tutorial section on boost::function_collection
is a bit clearer now.
The library works OK for
MSVC>=14.0,GCC>=5.0,Clang>=3.7. Unfortunately, Intel
fails
for test_algorithm:
https://lists.boost.org/Archives/boost/2017/06/236016.php
If someone's interested in helping fix that, please step up.
Thank you,
Joaquín M López Muñoz