weak_ptrってどうやって実装してるんだろう