[Bug libstdc++/51626] [4.6 Regression] [C++0x] can't use C++98 allocators with -std=c++0x
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Dec 19 19:05:00 GMT 2011
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
More information about the Gcc-bugs
mailing list