Go to file
2017-01-09 10:02:32 +01:00
doc typo 2016-12-05 11:38:42 +01:00
example added -std=c++11/-std=c++14 flags for GCC/Clang 2016-12-04 13:04:46 +01:00
include/boost/poly_collection removed superfluous this-> 2016-12-05 11:38:22 +01:00
meta initial commit 2016-11-06 11:17:58 +01:00
test added -std=c++11/-std=c++14 flags for GCC/Clang 2016-12-04 13:04:46 +01:00
.travis.yml cleaned Travis script 2017-01-09 10:02:32 +01:00
index.html initial commit 2016-11-06 11:17:58 +01:00
README.md typo 2016-11-06 13:09:33 +01:00

(Candidate) Boost PolyCollection library

Warning: Currently, Boost.PolyCollection is not part of the Boost libraries: its naming and structure conform to the requirements of Boost as the intention is to eventually submit it for formal review and acceptance into the project.

Boost.PolyCollection: fast containers of polymorphic objects.

Online docs
Seminal article at bannalia.blogspot.com

Typically, polymorphic objects cannot be stored directly in regular containers and need be accessed through an indirection pointer, which introduces performance problems related to CPU caching and branch prediction. Boost.PolyCollection implements a novel data structure that is able to contiguously store polymorphic objects without such indirection, thus providing a value-semantics user interface and better performance. Three polymorphic collections are provided:

dealing respectively with classic base/derived or OOP polymorphism, function wrapping in the spirit of std::function and so-called duck typing as implemented by Boost.TypeErasure.

Requirements

  • A compiler with C++11 support. The library has been tested with Visual Studio 2015, GCC 5.2.1 and Clang 3.7.
  • A reasonably recent version of Boost.