我有一个对象(让我们称之为X),可以通过其他对象访问std::shared_ptr.但是,在某些时候,这些对象需要创建一个唯一的非共享X副本,因为它想要修改它.这在某种程度上类似于写时复制,但由于其他一些细节而不完全相同.
基本上我想有这样的语义:
struct Foo
{
std::shared_ptr<Bar> bar;
void go()
{
// bar.use_count() >= 1
bar.make_this_object_unique();
// bar.use_count() == 1
}
}
Run Code Online (Sandbox Code Playgroud)