>>52
> > A *a(int i) {return as.add(new A(i));}
> add() の中の push_back() で例外飛んだらリークする。

これはpush_back()出来なかった分をケアしてやればおk?

https://ideone.com/s4ibLz
・天然のstd::bad_allocは得られなかったので誤魔化した