スレを勃てるまでもないC/C++の質問はここで 24at TECHスレを勃てるまでもないC/C++の質問はここで 24 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト5:デフォルトの名無しさん 15/11/28 20:36:01.12 JroX99O/.net わあ、nbsp のつもりがひどいことになってしまいました。 クラスを再掲します。インデントは全角スペースにしました。 class A { public: std::unique_ptr<int[]> xxx = nullptr; private: void reset_xxx(size_t n) /* noexcept */ // <- このコメントを外したい { xxx.reset(new(std::nothrow) int[n]); /* new が失敗したときはここでどうにかする */ } }; 6:デフォルトの名無しさん 15/11/29 20:15:17.63 +8PPW4GA.net >>4 (1)については、 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf の、3.7.4.2.3に If a deallocation function terminates by throwing an exception, the behavior is undefined. って書いてある。だから例外投げるデストラクタの存在は無視して良いと思う。 あとnewは例外を投げるとすればstd::bad_alloc以外は投げない事になってるのと、 その場合にはそのサイズのメモリの確保は出来ない事になってるので 素直にstd::terminate投げるなりexit呼ぶなりしても良いと思う。 (2)については、(const_cast出来るって意味で)本当に書き換え不能な領域を実行中に作るのは無理なので 書き換えしないでねって他のプログラマに表明する以上の意味は無いと思う。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch