Какова цель 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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