http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55727
--- Comment #3 from Matthias Kretz <kretz at kde dot org> 2012-12-18 13:26:21 UTC --- (In reply to comment #2) > (In reply to comment #0) > > Right now it does not even suffice to reimplement new/delete inside Foo to > > make > > std::vector<Foo> work. > > Sorry, this statement seems to be wrong. After more investigation I see that my original statement was right. The default allocator uses ::operator new(size_t) instead of T::operator new - and obviously it has to use the global one because allocation and construction are split into two functions. I just created an allocator class that uses posix_memalign and __alignof to implement an allocator as I'd like to have for a proof of concept. If you are interested, I can patch the new_allocator class to support over-alignment (while still using operator new). Would you be interested?