* libsupc++/nested_exception.h: Do not try to derive from final
classes.
* testsuite/18_support/nested_exception/throw_with_nested.cc: Test
final class.
From-SVN: r221476
+2015-03-17 Jonathan Wakely <jwakely@redhat.com>
+
+ * libsupc++/nested_exception.h: Do not try to derive from final
+ classes.
+ * testsuite/18_support/nested_exception/throw_with_nested.cc: Test
+ final class.
+
2015-03-13 Jonathan Wakely <jwakely@redhat.com>
* acinclude.m4: Make --enable-libstdcxx-time=auto work for dragonfly.
{ throw static_cast<_Up&&>(__t); }
};
- template<typename _Tp, bool = __is_class(_Tp)>
+ template<typename _Tp, bool = __is_class(_Tp) && !__is_final(_Tp)>
struct _Throw_with_nested_helper : _Throw_with_nested_impl<_Tp>
{ };
struct not_derived { virtual ~not_derived() noexcept; };
inline not_derived::~not_derived() noexcept = default;
+struct uninheritable final { };
+
void test01()
{
bool test __attribute__((unused)) = false;
VERIFY( test );
}
+void test03()
+{
+ bool test __attribute__((unused)) = false;
+
+ try
+ {
+ std::throw_with_nested(uninheritable());
+ }
+ catch (const std::nested_exception&)
+ {
+ VERIFY( false );
+ }
+ catch(const uninheritable&)
+ {
+ test = true;
+ }
+ VERIFY( test );
+}
+
int main()
{
test01();
test02();
+ test03();
return 0;
}