smart_ptrを使ったオブジェクトの数珠繋ぎで質問。
 class N {
  shared_ptr<N> p_;
  N(shared_ptr<N> const&amp; p) : p_(p) {}
 };
 shared_ptr<N> v(new N(shared_ptr<N>()); // ルートは親なし
 for (int i=0; i<T; ++i) {
  shared_ptr<Node>(new Node(v)).swap(v); // 前のノードが親
 }
みたいにvを葉とする一本鎖を作った後、v.reset()で全ノードを連鎖的に解放したいのですが、
深さTが大きいと解放の連鎖が途中で止まってしまいます。(Tが小さいとうまくいく)
原因が分かる方いますか?