Ticket #7033: SolarisStudio 12.3 bug: doesn't like intrusive::detail::type_has_rebind::test() declarations

[SVN r79437]
This commit is contained in:
Ion Gaztañaga
2012-07-12 07:46:43 +00:00
parent d1c14890d9
commit 6ddddd583f

View File

@@ -182,7 +182,11 @@ template <typename Ptr, typename T>
struct type_has_rebind struct type_has_rebind
{ {
template <typename X> template <typename X>
#if !defined (__SUNPRO_CC)
static char test(int, typename X::template rebind<T>*); static char test(int, typename X::template rebind<T>*);
#else
static char test(int, typename X::rebind<T>*);
#endif
template <typename X> template <typename X>
static int test(boost::intrusive::detail::LowPriorityConversion<int>, void*); static int test(boost::intrusive::detail::LowPriorityConversion<int>, void*);
@@ -194,7 +198,11 @@ template <typename Ptr, typename T>
struct type_has_rebind_other struct type_has_rebind_other
{ {
template <typename X> template <typename X>
#if !defined (__SUNPRO_CC)
static char test(int, typename X::template rebind<T>::other*); static char test(int, typename X::template rebind<T>::other*);
#else
static char test(int, typename X::rebind<T>::other*);
#endif
template <typename X> template <typename X>
static int test(boost::intrusive::detail::LowPriorityConversion<int>, void*); static int test(boost::intrusive::detail::LowPriorityConversion<int>, void*);
@@ -205,12 +213,6 @@ struct type_has_rebind_other
template <typename Ptr, typename T> template <typename Ptr, typename T>
struct type_rebind_mode struct type_rebind_mode
{ {
template <typename X>
static char test(int, typename X::template rebind<T>::other*);
template <typename X>
static int test(boost::intrusive::detail::LowPriorityConversion<int>, void*);
static const unsigned int rebind = (unsigned int)type_has_rebind<Ptr, T>::value; static const unsigned int rebind = (unsigned int)type_has_rebind<Ptr, T>::value;
static const unsigned int rebind_other = (unsigned int)type_has_rebind_other<Ptr, T>::value; static const unsigned int rebind_other = (unsigned int)type_has_rebind_other<Ptr, T>::value;
static const unsigned int mode = rebind + rebind*rebind_other; static const unsigned int mode = rebind + rebind*rebind_other;