new X(tmp.release())
これマジでだめなの?
こんなコードはそこらじゅうで
使われてると思うんだけど