doc | ||
example | ||
include/boost/poly_collection | ||
meta | ||
test | ||
.gitattributes | ||
.travis.yml | ||
index.html | ||
README.md |
Boost PolyCollection library
develop branch |
master branch |
---|
Warning: Boost.PolyCollection has been accepted into Boost but it is yet to be released as part of an official Boost distribution.
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.