Что касается компоновки, мы можем предположить, что ваш объект p
расположен так же, как объект типа int*
.
Это потому, что тип p
является структурой, чейединственным элементом данных является unique_ptr<int>
, а это, в свою очередь, фактически структура, единственным элементом данных которой является int*
.(Вероятно, у него также есть пустой базовый класс, который содержит удалитель.)
Это все предположение, поскольку ничего из этого не указано в правилах языка, но это хорошее предположение, поскольку оно так же эффективно, как и представлениеможно представить.
То, что он расположен так же, как указатель int, конечно, не превращает ваш объект в указатель int, но если вы притворяетесь, что он один, и перезаписываете его (чтовам нельзя делать), тогда вышеизложенное объясняет, что вы видите.