Title say it all really, test case is:
#include <tr1/type_traits>
#include <exception>
static const bool b = std::tr1::is_polymorphic<std::exception>::value;
which produces:
/usr/local/gcc/4.0.2/lib/gcc/i686-pc-linux-gnu/4.0.2/../../../../include/c++/4.0.2/tr1/type_traits:
In instantiation of `std::tr1::__is_polymorphic_helper<std::exception,
false>::__second<std::exception>':
/usr/local/gcc/4.0.2/lib/gcc/i686-pc-linux-gnu/4.0.2/../../../../include/c++/4.0.2/tr1/type_traits:328:
instantiated from `const bool
std::tr1::__is_polymorphic_helper<std::exception, false>::__value'
/usr/local/gcc/4.0.2/lib/gcc/i686-pc-linux-gnu/4.0.2/../../../../include/c++/4.0.2/tr1/type_traits:338:
instantiated from `std::tr1::is_polymorphic<std::exception>'
/home/john/boost/libs/type_traits/test/is_polymorphic_test.cpp:61:
instantiated from here
/usr/local/gcc/4.0.2/lib/gcc/i686-pc-linux-gnu/4.0.2/../../../../include/c++/4.0.2/tr1/type_traits:324:
error: looser throw specifier for `std::tr1::__is_polymorphic_helper<_Tp,
<anonymous> >::__second<_Up>::~__second() [with _Up = std::exception, _Tp =
std::exception, bool <anonymous> = false]'
/usr/local/gcc/4.0.2/lib/gcc/i686-pc-linux-gnu/4.0.2/../../../../include/c++/4.0.2/exception:58:
error: overriding `virtual std::exception::~exception() throw ()'
Regards, John Maddock.
--
Summary: is_polymorphic doesn't compile if the argument type has
non-throwing destructor
Product: gcc
Version: 3.0.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: john at johnmaddock dot co dot uk
GCC build triplet: linux.x86
GCC host triplet: linux.x86
GCC target triplet: linux.x86
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24809