#include #include #include int main() { std::vector original{1, 2}; auto independent = original; independent[0] = 9; assert(original[0] == 1 && independent[0] == 9); std::weak_ptr> observer; { auto owner = std::make_shared>(original); observer = owner; { auto shared = owner; (*shared)[0] = 7; assert((*owner)[0] == 7); } auto pinned = observer.lock(); assert(pinned && (*pinned)[0] == 7); } assert(observer.expired()); assert(!observer.lock()); }