multi_index
multi_index copied to clipboard
Minimal boost::multi_index implementation
multi_index
BoostLess MultiIndex, for a C++11 compiler.
Table of Contents
- Introduction
- Changes
- Documentation
- Platforms
- Contributors
- License
Introduction
Boost, although a great library, aims to maintain compatibility with as many compilers as possible, with workarounds for the buggiest of systems. These abstractions have a cost, and now that C++11 compilers are available for every major system, most of the Boost machinery is now more trouble than it's worth.
Boost.MultiIndex is an excellent library, with use for modern code, however, it depends on archaic machinery. Removing this machinery to use variadic templates removes ~140,000 lines of code, and dramatically improves compilation time and memory, simplifying its integration in a modern development environment.
Changes
This fork aims to maintain as much compatibility with the original implementation as possible. Only a few, significant changes were made:
- Removing the Boost namespace to avoid inclusion/compatibility issues with other Boost libraries.
- Removing Boost.MPL to use Brigand and std::tuple.
Documentation
The documentation, with the exception of the Boost namespace, should be identical to Boost's reference.
Platforms
MultiIndex is continually built with the following compiler and compiler versions:
- Clang 3.8+
- GCC 5.3+
- MinGW 5.3.0 (MXE, MinGW, and MSYS2)
- Visual Studio 14 2017
Visual Studio 2015 has various bugs with nested templates, and is therefore not supported. These bugs are fixed in Visual Studio 2017.
Contributors
- Alex Huszagh
MultiIndex is forked from Boost's implementation, and shares nearly all of its code from it. Joaquin M Lopez Munoz is the author of the Boost implementation, and therefore of the nearly all of the source code, although he is unaffilitated with the fork.
License
Boost, see license.