「プログラミング言語C++第四版」について気が付いたことなど (2)

非推奨って言われてもなあ (笑)


13.5.1.3 例外指定

古いC++コードでは、例外指定(exception specification)が使われている。たとえば:

void f( int) throw( Bad, Worse); // 送出する例外は Bad と Worse に限られる
void g( int) throw(); // 例外を送出しない

空の例外指定 throw() は、noexcept(§ 13. 5. 1. 1)と等価である。…(中略)… 空でないthrow 指定子は、使いこなすのが難しい上に、指定された例外が送出されたかどうかの判断のための実行時チェックが高コストになる可能性がある。この機能は、うまくいかなかったので、現在では非推奨とされている。利用し てはいけない。


感想:

これは翻訳の問題ではなくてただの感想ですが、noexcept以外は役に立たないということのようですけれども、標準規格に取り入れられた機能が「うまくいかなかったので非推奨」って言われても困るかも知れません。でも、そもそもユーザー例外って、大域エラー処理以外ではあまり使わないものですし、私はthrow()機能は殆ど使ってないので個人的には実は困りません。

 

コメントを残す