Hello, We are using boost::icl::interval_set with very large amounts of intervals, and we are having some performance issues. Profiling showed that, in our use-case, a lot of time was spent on memory allocation/deallocation, and swapping std::set for boost::flat_set made a huge, positive difference. We may have a very specific use-case, but would you consider a small modification to the library inside "boost/icl/impl_config.hpp", in order to open the door for other set/map implementations? Here is the simple change we made to "boost/icl/impl_config.hpp" for this experiment: <code> #if defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION) # define ICL_IMPL_SPACE boost::container #elif defined(ICL_USE_STD_IMPLEMENTATION) # define ICL_IMPL_SPACE std + #elif defined(ICL_USE_CUSTOM_IMPLEMENTATION) + # define ICL_IMPL_SPACE ICL_CUSTOM_IMPL_SPACE #else # define ICL_IMPL_SPACE std #endif </code> And then declaring the following before including: <code> namespace custom_icl { template <class Key, class T, class Compare, class Allocator> using map = boost::container::flat_map<Key, T, Compare, Allocator>; template <class Key, class Compare, class Allocator> using set = boost::container::flat_set<Key, Compare, Allocator>; } // namespace custom_icl #define ICL_USE_CUSTOM_IMPLEMENTATION 1 #define ICL_CUSTOM_IMPL_SPACE custom_icl </code> Would such a change make sense in your opinion? If that's the case, then I would be happy to participate in the contribution. Thank you and best regards, Martin Duvanel