Corrected rethrow_if_nested

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@104943 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Howard Hinnant
2010-05-28 13:35:41 +00:00
parent 13c98cc20d
commit 6bb9f58bc8
2 changed files with 33 additions and 17 deletions

View File

@@ -211,19 +211,19 @@ template <class _E>
inline
void
rethrow_if_nested(const _E& __e, typename enable_if<
!is_same<_E, nested_exception>::value &&
is_convertible<_E*, nested_exception*>::value
is_polymorphic<_E>::value
>::type* = 0)
{
static_cast<const nested_exception&>(__e).rethrow_nested();
const nested_exception* __nep = dynamic_cast<const nested_exception*>(&__e);
if (__nep)
__nep->rethrow_nested();
}
template <class _E>
inline
void
rethrow_if_nested(const _E& __e, typename enable_if<
is_same<_E, nested_exception>::value ||
!is_convertible<_E*, nested_exception*>::value
!is_polymorphic<_E>::value
>::type* = 0)
{
}