Boost logo

Boost Users :

Subject: [Boost-users] [poly_collection] Boost.PolyCollection release version ready
From: Joaquin M López Muñoz (joaquinlopezmunoz_at_[hidden])
Date: 2017-06-27 21:57:50


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



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net