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

Reply via email to