diff --git a/include/boost/intrusive/detail/memory_util.hpp b/include/boost/intrusive/detail/memory_util.hpp index e0256e4..1a6431b 100644 --- a/include/boost/intrusive/detail/memory_util.hpp +++ b/include/boost/intrusive/detail/memory_util.hpp @@ -182,7 +182,11 @@ template struct type_has_rebind { template + #if !defined (__SUNPRO_CC) static char test(int, typename X::template rebind*); + #else + static char test(int, typename X::rebind*); + #endif template static int test(boost::intrusive::detail::LowPriorityConversion, void*); @@ -194,7 +198,11 @@ template struct type_has_rebind_other { template + #if !defined (__SUNPRO_CC) static char test(int, typename X::template rebind::other*); + #else + static char test(int, typename X::rebind::other*); + #endif template static int test(boost::intrusive::detail::LowPriorityConversion, void*); @@ -205,12 +213,6 @@ struct type_has_rebind_other template struct type_rebind_mode { - template - static char test(int, typename X::template rebind::other*); - - template - static int test(boost::intrusive::detail::LowPriorityConversion, void*); - static const unsigned int rebind = (unsigned int)type_has_rebind::value; static const unsigned int rebind_other = (unsigned int)type_has_rebind_other::value; static const unsigned int mode = rebind + rebind*rebind_other;