Boost logo

Boost :

From: Daniel Frey (d.frey_at_[hidden])
Date: 2003-02-16 16:45:19


On Sun, 16 Feb 2003 12:45:30 +0100, John Maddock wrote:

>> typedef char t9[ !test::is_class< int( int ) >::value ];
>
> Generates warnings on gcc only, these have been reported and confirmed
> as a gcc bug:
> http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
> r=8503
>
>> typedef char t10[ !test::is_enum< int( int ) >::value ];
>
> again that's a gcc 3.2 bug.

Here's a patch which should fix the problems and shouldn't hurt any other
compiler as is_function can always be used in this context AFAICS.

Regards, Daniel

--- is_enum.hpp Sun Feb 16 22:38:13 2003
+++ is_enum.hpp.patch Sun Feb 16 22:35:54 2003
@@ -15,6 +15,7 @@
 #include "boost/type_traits/is_arithmetic.hpp"
 #include "boost/type_traits/is_reference.hpp"
 #include "boost/type_traits/is_convertible.hpp"
+#include "boost/type_traits/is_function.hpp"
 #include "boost/type_traits/config.hpp"
 
 #ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
@@ -65,6 +66,7 @@
       (::boost::type_traits::ice_or<
            ::boost::is_arithmetic<T>::value
          , ::boost::is_reference<T>::value
+ , ::boost::is_function<T>::value
        // We MUST do this on conforming compilers in order to
        // correctly deduce that noncopyable types are not enums (dwa
        // 2002/04/15)...
@@ -75,6 +77,7 @@
       (::boost::type_traits::ice_or<
            ::boost::is_arithmetic<T>::value
          , ::boost::is_reference<T>::value
+ , ::boost::is_function<T>::value
        // However, not doing this on non-conforming compilers prevents
        // a dependency recursion.
>::value));


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk