The patch at
https://svn.boost.org/trac/boost/attachment/ticket/386/pool.patch
allows the pool classes to support zero sized allocation, by returning
a null pointer. std::vector sometimes allocates a zero sized block,
so this is necessary for pool_allocator. Returning a null pointer
is the simplest solution and I'm that the standard allows an allocator
to return the null pointer when asked for a block of zero elements.