Go to file
joaquintides 1f5655001d typo
2019-09-04 10:00:19 +02:00
doc updated release notes 2019-09-04 09:28:30 +02:00
example removed/escaped spurious semicolons 2017-11-16 14:50:19 +01:00
include/boost/poly_collection typo 2019-09-04 10:00:19 +02:00
meta added explicit-failures-markup.xml 2017-10-26 20:26:33 +02:00
test refined previous commit 2019-09-03 14:38:29 +02:00
.gitattributes added .gitattributes 2017-06-01 08:39:19 +02:00
.travis.yml reverted Travis to Trusty as per https://lists.boost.org/Archives/boost/2019/06/246359.php 2019-06-17 09:48:13 +02:00
appveyor.yml added missing slash 2018-03-05 13:05:51 +01:00
index.html fixed redirection URL 2017-06-05 23:48:45 +02:00
README.md added links to regression tests 2019-01-03 09:41:06 +01:00
test_results.svg added links to regression tests 2019-01-03 09:41:06 +01:00

Boost PolyCollection library

Branch Travis AppVeyor Regression tests
develop Build Status Build Status Test Results
master Build Status Build Status Test Results

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

Boost.PolyCollection is a header-only library. C++11 support is required. The library has been verified to work with Visual Studio 2015, GCC 4.8 and Clang 3.3.