weak_ptr 是否与 unique_ptr 一起工作?

Does weak_ptr work alongside unique_ptr?

据我了解,std::weak_ptr 用作引用可能已被释放的 std::shared_ptr 引用的内存的安全方法。它也可以与 std::unique_ptr 一起使用吗?

没有。

不幸的是,您将不得不使用 std::shared_ptr,并记录 std::weak_ptr 应该只是暂时锁定。

没有

weak_ptr 唯一可用的构造函数是接受 shared_ptr 或另一个 weak_ptr 的构造函数。

http://en.cppreference.com/w/cpp/memory/weak_ptr/weak_ptr

As I understand it std::weak_ptr is used as a safe way of referencing memory referenced by shared_ptrs which may have been deallocated.

你理解错了。 std::weak_ptr 允许访问对象,其所有权由 std::shared_ptr 维护而无需共享。现在当你真正明白std::weak_ptr是什么的时候你应该明白你关于std::unique_ptr的问题没有任何意义。

有一个等效的指针充当 std::unique_ptr 的观察者,但不会以与 std::weak_ptr 相同的方式提供安全性。

那个指针是原始指针。如果它们的寿命不超过唯一所有者,则可以安全使用。

如果你需要知道原始指针的所有者的生命周期是否结束,那么不,没有办法,这不是 std::unique_ptr 的目标。