
Hi Joaquín, joaquin@tid.es (23.4.2008 18:21):
Filip Konvička escribió:
Hi,
trying to use fast_pool_allocator in Boost 1.35 fails with MSVC 9.0; it worked well with MSVC 8.0. The following code fragment shows the error:
[...]
(From what I've seen digging through the code, it seems to me that the allocator gets rebound from int to void, which does not work for fast_pool_allocator.)
This very problem was reported a couple of weeks ago:
Uh, sorry, I missed that one, even though I read most of MI posts.
The reason is what you point out, fast_pool_allocator cannot specialize for void. Please consult the aforementioned thread as it contains a workaround proposal that you might consider using (basically, wrapping fast_pool_allocator into a conformant allocator class).
After the initial report I've been investigating and I am now not so sure whether this can be pinpointed as a fast_pool_allocator bug: the standard is not 100% clear about whether an allocator must be instantiable for void (strictly speaking, whether a conformant allocator must be rebindable to void). Consequently, I'll probably be conservative and remove the void instantiations for the next release of Boost.MultiIndex.
Thanks, I'll use the workaround an I'm looking forward to the future change. I'm using MI quite a lot now and I've grown used to it, it is indeed so useful and convenient! As for the pool allocators, I know that there were errors in 1.33-, but I think that now it's OK. The docs are quite clear about what the library does and the implementation is quite clear as well. It would benefit from using the Boost.Singleton and Boost.Thread libraries, though. Still I don't see any current issue, apart from the incompatibility with MI, of course :-) Thanks, Filip