>630
驚くべき事に shared_ptr<void> にしても正しいデストラクタが呼ばれる。

キーワードは deleter。
shared_ptr 生成時に正しいデストラクタを呼ぶ deleter も作成して shared_ptr の中で保持し、破棄時に呼び出している。