Разница между std::indirect и std::unique_ptr заключается в их функциях и особенностях.
std::uniqueptr — это указатель на тип T, который является «уникальным» в том смысле, что может быть только один объект uniqueptr, который содержит один и тот же адрес. 5 Когда unique_ptr уничтожается, уничтожается и значение, на которое он указывает. 5 Указатель полезен, когда нужен указатель на объект, на который не будет других указателей и который будет удалён после удаления указателя. 5
std::indirect — это указатель единоличного доступа, который представляет собой объекты-значения. 2 Некоторые отличия indirect от unique_ptr:
Кроме того, indirect поддерживает только свой тип, в то время как polymorphic — любой производный, и потому «под капотом» содержит инфраструктуру для подбора нужного конструктора копирования. 2