Допустим, надо создавать объект динамически, и потом передавать его в другой объект, чтобы последний уже освобождал этот динамически созданный объект. При этом одновременно динамический объект используется только одним собственником.
Есть два варианта с умными указателями:
1)
struct User
{
    ...
    void set(std::shared_ptr<Dynamic> d)
    {
        mD = d;
    }
    std::shared_ptr<Dynamic> mD;
    ...
};
void setDynamic(User& u)
{
    auto dynamic = std::make_shared<Dynamic>();
    ...
    u.set(dynamic);
}
struct User
{
    ...
    void set(std::unique_ptr<Dynamic>&& d)
    {
         mD = d;
    }
    std::unique_ptr<Dynamic> mD;
    ...
};
void setDynamic(User& u)
{
    auto dynamic = std::make_unique<Dynamic>();
    ...
    u.set(std::move(dynamic));
}
Какой из них лучше?



