Gcc specific workaround does not work for EDG based compilers, even if they define __GNUC__.

[SVN r21597]
This commit is contained in:
John Maddock
2004-01-11 15:58:28 +00:00
parent 32f2d33eed
commit 3db3f894df

View File

@ -1,5 +1,5 @@
// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
// Hinnant & John Maddock 2000-2003.
// Hinnant & John Maddock 2000-2003.
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
@ -20,7 +20,7 @@
# ifdef __EDG_VERSION__
# include "boost/type_traits/is_const.hpp"
# include "boost/type_traits/is_volatile.hpp"
# endif
# endif
#else
# include "boost/type_traits/is_scalar.hpp"
# include "boost/type_traits/is_array.hpp"
@ -48,16 +48,16 @@ namespace detail {
// is_class<> metafunction due to Paul Mensonides
// (leavings@attbi.com). For more details:
// http://groups.google.com/groups?hl=en&selm=000001c1cc83%24e154d5e0%247772e50c%40c161550a&rnum=1
#ifdef __GNUC__
#if defined(__GNUC__) && !defined(__EDG_VERSION__)
template <class U> static ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
template <class U> static ::boost::type_traits::no_type is_class_tester(...);
template <class U> ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
template <class U> ::boost::type_traits::no_type is_class_tester(...);
template <typename T>
struct is_class_impl
{
BOOST_STATIC_CONSTANT(bool, value =
BOOST_STATIC_CONSTANT(bool, value =
(::boost::type_traits::ice_and<
sizeof(is_class_tester<T>(0)) == sizeof(::boost::type_traits::yes_type),
::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value
@ -73,7 +73,7 @@ struct is_class_impl
template <class U> static ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
template <class U> static ::boost::type_traits::no_type is_class_tester(...);
BOOST_STATIC_CONSTANT(bool, value =
BOOST_STATIC_CONSTANT(bool, value =
(::boost::type_traits::ice_and<
sizeof(is_class_tester<T>(0)) == sizeof(::boost::type_traits::yes_type),
::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value