forked from boostorg/type_traits
Gcc specific workaround does not work for EDG based compilers, even if they define __GNUC__.
[SVN r21597]
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user