has_xxx: Adjust MSVC 7.1/8.0 workaround (ticket #1317)

[SVN r49260]
This commit is contained in:
Aleksey Gurtovoy
2008-10-10 21:59:29 +00:00
parent 8e75b0f4ae
commit afbaa1252e

View File

@@ -157,11 +157,13 @@ template<> struct trait<T> \
// applied to partial specialization to fix some apparently random failures
// (thanks to Daniel Wallin for researching this!)
namespace boost { namespace mpl { namespace aux {
template< typename T > struct msvc71_sfinae_helper { typedef void type; };
}}}
# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
template< typename T > \
struct BOOST_PP_CAT(trait, _msvc_sfinae_helper) \
{ \
typedef void type; \
};\
\
template< typename T, typename U = void > \
struct BOOST_PP_CAT(trait,_impl_) \
{ \
@@ -172,7 +174,7 @@ struct BOOST_PP_CAT(trait,_impl_) \
template< typename T > \
struct BOOST_PP_CAT(trait,_impl_)< \
T \
, typename boost::mpl::aux::msvc71_sfinae_helper< typename T::name >::type \
, typename BOOST_PP_CAT(trait, _msvc_sfinae_helper)< typename T::name >::type \
> \
{ \
BOOST_STATIC_CONSTANT(bool, value = true); \