bool reallocateWithCopy(OldAllocator &oldAllocator, NewAllocator &newAllocator, block &b,
                         size_t n)
 {
   auto newBlock = newAllocator.allocate(n);
   if (!newBlock) {
     return false;
   }
   blockCopy(b, newBlock);
   oldAllocator.deallocate(b);
   b = newBlock;
   return true;
 }
 bool reallocate_with_copy(OldAllocator &oldAllocator, NewAllocator &newAllocator, block &b,
   size_t n) noexcept
 {
   auto newBlock = newAllocator.allocate(n);
   if (!newBlock) {
     return false;
   }
   block_copy(b, newBlock);
   oldAllocator.deallocate(b);
   b = newBlock;
   return true;
 }