Hi Doug, >> Will I be able to write: >> >> any<fast_allocator> a; >> values[10] = a; >> >> ? >> IOW, I don't think your proposal provides any means to convert between >> 'any' with different allocators. And I'm not sure you can easily achieve >> that.... > > Sure you can. You just store a copy of the allocator along with the data > you are holding. The holders would look like this: [...] > virtual holder* clone() = 0 > { > holder* result = allocator.allocate(1); > new (result) holder(value, allocator); > return result; > }
Aha, that's what I was trying to say, but not very clearly. Yes, *this* will work. But... it means that if you do any<> a1; any<fast_allocator> a2 = a1; Then value stored in a2 will be allocated using a1's allocator, not a2's. Once any is created with a specific allocator, all copies will use the same allocator, which is doubtful behaviour. In the example above, the "fast_allocator" parameter has no effect at all. Even if this behavior is desirable, you don't need to add template parameter to 'any'. You can add template parameter to 'holder' only, and another constructor, which allows to specify allocator. - Volodya > > virtual void destroy() = 0 > { > Allocator allocator(this->allocator); > this->~holder(); > allocator.deallocate(this); > } > }; > > This requires allocators to be CopyConstsructible, of course. > > Doug > _______________________________________________ > Unsubscribe & other changes: > http://lists.boost.org/mailman/listinfo.cgi/boost _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost