
From: Jason Hise <chaos@ezequal.com>
Rob Stewart wrote:
From: "Pavel Vozenilek" <pavel_vozenilek@hotmail.com>
"Rob Stewart" wrote: [the next two levels of attributions were lost]
1. Creator policy is redundant with the standard Allocator concept, I think. Though the standard Allocator concept has some subtle, tricky semantics, I think it's nevertheless worth using: that would permit interoperability with existing allocator implementations.
Thinking it again: you are likely right here.
Handling of constructor arguments could be separated from allocation.
I don't know about that, but perhaps an adapter could be provided to make a standard allocator look like a creator?
I should be possible w/o adapter. Just expecting std::allocator like parameter in template.
That's only true if you separate the construction functionality from the allocation. If you can't for some reason (I haven't looked to see whether it is possible), an adapter can rely on the allocator for its memory management.
Summary with implied but possibly misunderstood information: OP: Creator policy is redundant with standard allocators. Pavel: Maybe you're right; construction and allocation could be handled separately. Me: An adapter could be used to fit a standard allocator into the creator mold. Pavel: No need for an adapter; change template parameter list. Me: That only works if you separate construction from allocation since allocators don't construct from argument lists.
Just to make sure... have you looked at create_using_std_allocator? It
Nope.
is designed to make it easy to use anything that fits the description of a standard allocator, and allows you to specify whether or not failed allocation (returning null) results in a bad_alloc exception being thrown.
That sounds like just the adapter I was suggesting.
I personally do not feel that creation and allocation are redundant. Allocation is initialization of memory, and creation is the initialization of an object.
I didn't say they were redundant, but that was the original point being made.
Additionally, I feel that it is important that creators be easy for client code to write when necessary. The current interface required for a singleton creator is, IMO, much simpler to meet than the interface for a standard allocator. Being able to write a creator makes it easy to wrap other existing libraries with singletons relatively quickly.
I agree. The simpler interface is superior to that of an allocator for those writing a creator without need for an allocator. However, for those clients with a standard allocator, your create_using_std_allocator adapter gives the best of both worlds. -- Rob Stewart stewart@sig.com Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer;