True, I guess that could be a problem. The libstdc++ implementation considers all of the strong pointers to have an initial `weak` count then then decreases it when the last strong pointer is freed.