Я удивлен, что не вижу стандарта или кого-либо еще (?), Предоставляющего адаптер/оболочку, чтобы стандартные распределители выглядели как std::memory_resource
. Я что-то упускаю? Это просто что-то вроде
template <typename ByteAllocator>
class AllocatorMemoryResource : public std::memory_resource {
ByteAllocator m_allocator;
void* do_allocate(std::size_t bytes, std::size_t alignment) override {
// Do something to align the storage???
return static_cast<void*>(m_allocator.allocate(bytes));
}
void do_deallocate(void* p, std::size_t bytes, std::size_t alignment) override {
m_allocator.deallocate(p, bytes);
}
bool do_is_equal(const std::pmr::memory_resource& other) const noexcept override {
return this == &other; // Right?
}
};
Предоставляется ли такая оболочка в std
или Boost или где-то еще? Я не находил. Я использую tbb::scalable_allocator
и хотел бы иметь возможность использовать его с std::pmr::vector<T>
.