と思って今作ったがあんま使い勝手の良いものにはならんかったorz
使い方としては
class Foo {
 sumapo<Foo> m_pCar;
 sumapo<Foo> m_pCdr;
 /*...*/
};
sumapo<Foo> ptr(new Foo());
と書いた後、ptrが開放されたとき、ptrが指すFooが握っているsumapoが残らず(循環があろうとなかろうと)参照カウントを減じて欲しいわけだが
これにはptrが握っているFooを開放する前に、ptrがFoo::m_pCdrやFoo::m_pCarを辿れる必要があるので
m_pCarやm_pCdrとptrが裏で手を握る必要がある