短い件名で質問をうまく表現する方法がわからないので、もっと長い説明を試してみましょう。次の例外クラスがあるとします。
class ExceptionTypeA : public std::runtime_error
{
// stuff
};
class ExceptionTypeB : public std::runtime_error
{
// stuff
operator ExceptionTypeA() const; // conversion operator to ExceptionTypeA
};
次に、これを実行して、キャッチブロックをトリガーすることはできますか?
try
{
throw ExceptionTypeB();
}
catch (ExceptionTypeA& a)
{
// will this be triggered?
}
残念ながらそうはならないと思いますが、ネットやSOで情報が見つからなかったので、聞いてみようと思いました。そして、はい、私は自分のコンパイラでプログラムを実行して何が起こるかを見ることができることを理解していますが、それは標準がこの動作について何を言っているのか、私のコンパイラが実装しているのかを教えてくれません(そして私はそれを信頼していません)。