std::set_new_handlerみたいに
失敗時のハンドラを登録できるRAIIを用意すればいんじゃね?
失敗が怖いからRAIIを使わないってのは怖がりすぎな気が

hoge_ptr<T> hoge = ...;

hoge.set_handler([](){
// リソースの解放失敗時に呼び出される
});