Unconditionally disable clang's __is_pod and __is_empty intrinsics when used with libstdc++ 4.2. This fixes an include order issue reported by Luc Bourhis.

Added `#include <cstddef>` to pull the stdlib's version macro, as done in boost/config/select_stdlib_config.hpp.

[SVN r78344]
This commit is contained in:
Michel Morin
2012-05-06 02:50:13 +00:00
parent d4290a588f
commit 1cfb87e358

View File

@ -124,6 +124,7 @@
#endif
#if defined(BOOST_CLANG) && defined(__has_feature)
# include <cstddef>
# include <boost/type_traits/is_same.hpp>
# include <boost/type_traits/is_reference.hpp>
# include <boost/type_traits/is_volatile.hpp>
@ -131,10 +132,10 @@
# if __has_feature(is_union)
# define BOOST_IS_UNION(T) __is_union(T)
# endif
# if (__has_feature(is_pod) && defined(_LIBCPP_VERSION)) || __has_feature(__is_pod__)
# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_pod)
# define BOOST_IS_POD(T) __is_pod(T)
# endif
# if (__has_feature(is_empty) && defined(_LIBCPP_VERSION)) || __has_feature(__is_empty__)
# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(__is_empty__)
# define BOOST_IS_EMPTY(T) __is_empty(T)
# endif
# if __has_feature(has_trivial_constructor)