http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51626

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-12-19 
18:57:45 UTC ---
I agree with the sentiment, but unfortunately a C++11 allocator isn't required
to provide a construct member at all.  17.6.3.5 p5 shows a minimal C++11
allocator, and that won't work either, so 4.6 doesn't correctly support
user-defined C++98 allocators or user-defined C++11 allocators!

I think the minimal fix is for __uninitialized_default_n_a and
__uninitialized_default_a to default construct an object of the iterator's
value_type and pass that to __alloc.construct(addressof(*cur))

A less-minimal fix would be to change all the containers to use
__uninitialized_fill_a instead of __uninitialized_default_a

Reply via email to