On 09/12/2015 03:46 AM, Ion GaztaƱaga wrote:
I'd like to separate the proposal to put that data structure into Boost and the proposal to put it into Boost.Container.
The implementation looks good although I have no experience with B+Trees or augmented data structures. I think we should have more innovative container in Boost and there have been more proposals to similar data structures that were not.
Regarding Boost.Container, one of the biggest problems with adding new stuff into Boost.Container is that it should be consistent with the rest of the library. The library supports C++03, supports Interprocess requirements, recursive types, SCARY iterators, etc... it must be maintained and documented as the rest of the library. I wouldn't like to maintain data structures I really don't fully understand or just left them unmaintained. We added stable_vector and static_vector but those were easier data structures.
Just like we have Boost.CircularBuffer or Boost.Unordered I'd like to propose adding adding new containers in its own library. Maybe an (optionally augmented) B+Tree library would be nice, and it could also contain a sequence container based on that data structure.
Just my 2 cents, does it make sense?
That makes sense. It may not be the best fit for Boost.Container. FWIW, I beleive I support all your requirements except for C++03 support and SCARY iterators. I think SCARY iterators should not be terribly hard to implement. Am I correct that to be SCARY iterator compatible it is ok to parameterize my iterators by allocator::pointer? It's just a problem if they depend on the allocator itself?