El 09/06/2014 10:11, Vicente J. Botet Escriba escribió:
Le 04/06/14 13:27, Vicente J. Botet Escriba a écrit :
|What about creating a Memory module containing| most of the things the standard defines in <memory> except maybe what is already in SmartPptr, e.g.
||* boost/interprocess/allocators/*|| |* boost/intrusive/pointer_traits.hpp | Any comments on this new module? Ion?
Thanks for the ping, I'm not closely following modularization threads. Interprocess allocators are only usable by Interprocess users, I don't think they should be outside. intrusive::pointer_traits is usable from other libraries. Container uses it extensively, but Container heavily depends on Intrusive. I don't know if other libraries use it. We also have a portable allocator_traits implementation in Boost.Container that might be reusable by other boost containers. We need to see real use cases to see if this class makes sense in Boost.Memory or its place should be Container. For Boost 1.56 we'll have new allocators in Boost.Container, and those take advantage of Boost.Container internals to offer reallocation, burst allocation, etc. They could be usable by other Boost containers, but they are still experimental and unless there is a strong need for that, I would not move them to a new module now. pointer_traits offers extensions not found in std::pointer_traits (like pointer casting). We need to to carefully think about this (Boost.Intrusive needs to make some conversions not covered by std::pointer_traits). In any case, if reusable, I would make a new library (with documentation and test cases), not only a new git module. So my opinion is: Don't move interprocess allocators, let's see if a strong need arises for a common pointer_traits/allocator_traits and we'll think about solutions. Best, Ion