Какова цель std::pmr::polymorphic_allocator? ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Какова цель std::pmr::polymorphic_allocator?

Сообщение Anonymous »

Я рассматриваю этот пример в справочнике по C++:

Код: Выделить всё

std::array buffer; // enough to fit in all nodes
std::pmr::monotonic_buffer_resource mbr{buffer.data(), buffer.size()};
std::pmr::polymorphic_allocator pa{&mbr};
std::pmr::list list{pa};
for (int i{}; i != total_nodes; ++i)
list.push_back(i);
Насколько я понимаю, mbr — это тот, который фактически выделяет память и возвращает void*. — это просто адаптер типа, возвращающий int*. Однако узлы list сами по себе не являются int. Они также содержат указатели. Таким образом, list.push_back() в любом случае потребует приведения указателей.
Есть ли причина, по которой существует std::pmr::polymorphic_allocator? Почему контейнеры std::pmr не принимают объекты std::pmr::memory_resource напрямую?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -allocator

Вернуться в «C++»