On Tue, Mar 15, 2016 at 8:31 PM, Phil Bouchard wrote:
Well first if you have a as an r-value:
p = g<X>(a, args...)
That means the allocator parameter must be constant:
g<X>(Allocator const &, arg...)
If it's constant it won't be able to change its internal state. I thought
that was the purpose of having instantiable allocators?
I think you do not understand the allocator model. 'const A&' is fine
for the allocator argument.
std::vector's constructors have a 'const A&' parameter.
std::allocate_shared takes a 'const A&' parameter.
std::function's function<A> constructor takes a 'const A&' parameter.
All of the above copy-initialize an A instance from the given
parameter, and would thus have a non-const A instance on which to call
allocate(), et cetera.
The way that the stateful allocators would be designed is such that
they all reference the same shared state (similar to 'Allocator' in
that example.cpp I gave you).
Glen