[ptr_container]Internal use of void* containers
Internally, the ptr_container classes use a void* container to do its magic. For example, ptr_vector uses a std::vector<void*> (and similarly for ptr_map and ptr_set) Or come to think of it, I believe it's actually vector<void**> and map<KEY,void*>, respectively. I'm curious as to why? This, of course, works just fine and since it's an internal detail it doesn't really matter. I'm just curious as to why you didn't use the more obvious (and perhaps wrong) choice of vector<T*>. Note: I'm not suggesting that it be changed. Functionally I have no issues with it, naturally, as it works. But, it does make debugging a little more interesting. But, even that is easy to get around. Just curious, -- Bill --
On 4/16/07, Bill Buklis <boostuser@pbjzone.com> wrote:
Internally, the ptr_container classes use a void* container to do its magic. ... I'm just curious as to why you didn't use the more obvious (and perhaps wrong) choice of vector<T*>. Note: I'm not suggesting that it be changed.
I think the main reason is to reduce code bloat. Instead of having to instantiate N vectors for different pointer types , the compiler can re-use a single instantiation of of vector<void *>. A good compiler might be able to optimize this anyway, but the world is full of sub-optimal compilers, and this is a fairly simple, pragmatic solution. Chris
participants (2)
-
Bill Buklis
-
Chris Uzdavinis