Может ли память выделяться и освобождаться разными типами распределителей?C++

Программы на C++. Форум разработчиков
Anonymous
Может ли память выделяться и освобождаться разными типами распределителей?

Сообщение Anonymous »

Мой вопрос мотивирован std::polymorphic, который может владеть объектом любого типа, производным от T, если он создан с помощью тега std::in_place_type. Но я не вижу такого конструктора:

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

template 
polymorphic(polymorphic&& other>);
(Где U является производным от T, а A неявно конвертируется/сравнивается с Allocator).
Мне кажется, что это должно быть возможно. Концепция распределителя, по-видимому, предполагает, что пока два распределителя равны, один может освободить память, выделенную другим. Действительно, любые два объекта std::allocator сравниваются равными, как и любые два объекта std::pmr::polymorphic_allocator с одним и тем же базовым ресурсом памяти.
Разрешено ли это, или я упускаю какую-то причину, почему память, выделенная одним распределителем, в целом не может быть освобождена равным распределителем, но с другим типом?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ator-types

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