- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
13 :4[sage]:2015/11/30(月) 22:38:13.05 ID:Dn8P3OaQ - >> 6
ありがとうございます。 (2) については仰るとおりで、まさにそれがやりたいことだったので、 const はつけておくことにします。 (1) については…… なんていうか、ちょっと聞きたいことと違っていました。 > 例外投げるデストラクタの存在は無視して良いと思う というのは 「どうせ例外が発生したときの挙動が undefined なんだから、 コンパイラが速いコードを生成するよう noexcept はつけててもいい」 ということだと理解したのですが、ぼくが noexcept で表現したいのは 「この関数はいつ呼ばれても(特に関数失敗時にも)意味のある値を返す」 ということなんです(これって変な考えなんでしょうか)。 なので xxx.reset が例外を投げうるなら noexcept は外したいです。 むしろ未定義動作をする可能性がある関数である、ということを強調して コメントにでも書いておきたいくらいです。 とはいえ常識的に考えて、ヒープが壊れていない限り int[] の delete[] が失敗することは ないですよね……。うーん。
|
|