代わりに std::unique_ptr (あるいは boost::scoped_ptr )を使います. 何故か? struct hoge { hoge() : xxx( get_resource() ) { /* 処理 */ if( some_cond ) throw some_exception(); /* さらに処理 */ } ~hoge() throw(){ release_resource(xxx); } /* ... */ private: XXX xxx; }; このようなコードで,コンストラクタ中に例外が投げられた場合, デストラクタが呼ばれず,解放漏れが起きるからです. このような露骨な場合でなくても, struct hoge { hoge() : xxx( get_resource() ), yyy() // ここで例外! { } ~hoge() throw(){ re