Add InlineStdAllocator::rebind struct member
Newer versions of libc++ (as well as libstdc++) require this of allocators. This member is needed for std::allocator_traits<InlineStdAllocator<T, SIZE>>::rebind_alloc<U>, which contains a typedef for InlineStdAllocator<U>. I believe this requirement was always present, but libc++ is checking for it now. AFAICT, the STL wouldn't be able to construct an InlineStdAllocator<U>, because there is no default constructor, and the copy constructor wouldn't accept a reference to InlineStdAllocator<T>. Perhaps that's OK because this allocator is only used with std::vector, not (say) std::list or std::map, which actually need to allocate internal node types. std::allocator_traits::rebind_alloc can automatically handle custom allocators with type parameters, but not with non-type parameters (i.e. It can't handle "size_t SIZE = 4"). See https://stackoverflow.com/a/34863387. Bug: b/175635923 Test: treehugger Change-Id: I0cceb47ab780414202cef1ed54fa7deb3773d01a
Loading
Please register or sign in to comment