我不知道怎么用简短的主题来表达我的问题,所以让我试着解释一下。假设我有以下异常类:
class ExceptionTypeA : public std::runtime_error
{
// stuff
};
class ExceptionTypeB : public std::runtime_error
{
// stuff
operator ExceptionTypeA() const; // conversion operator to ExceptionTypeA
};
那么我可以这样做,并触发catch块吗?
try
{
throw ExceptionTypeB();
}
catch (ExceptionTypeA& a)
{
// will this be triggered?
}
我猜它不会,这很遗憾,但由于在网上或SO上找不到相关信息,所以我想问一下。是的,我知道我可以在编译器中运行程序并查看发生了什么,但那并不能告诉我标准对这种行为的规定,只能告诉我我的编译器实现了什么(而且我不信任它)。
int (Base::*)
可以转换为int (Derived::*)
。如果我抛出前者,能否捕获后者?GCC似乎不同意,但标准措辞有点不清楚。 - max