1
0
forked from boostorg/core

Compare commits

..

2 Commits

Author SHA1 Message Date
Glen Fernandes
8503c536dc Add documentation for rebind C++03 compatibility 2022-07-17 17:18:54 -04:00
Glen Fernandes
7100c05490 In C++03 use rebind<U>::other instead of rebind<U> 2022-07-17 10:06:51 -04:00
4 changed files with 20 additions and 2 deletions

View File

@@ -113,6 +113,9 @@ also not defined (`pointer_traits` is SFINAE-friendly).
where `Args` is zero or more type arguments; otherwise, the member is not
defined.]]]
[note When C++11 template aliases are not supported, the `type` for `rebind` is
`T::rebind<U>::other` if such a type exists.]
[endsect]
[section Member functions]

View File

@@ -100,11 +100,19 @@ template<class T, class U, class = void>
struct ptr_rebind
: ptr_transform<T, U> { };
#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
template<class T, class U>
struct ptr_rebind<T, U,
typename ptr_valid<typename T::template rebind<U> >::type> {
typedef typename T::template rebind<U> type;
};
#else
template<class T, class U>
struct ptr_rebind<T, U,
typename ptr_valid<typename T::template rebind<U>::other>::type> {
typedef typename T::template rebind<U>::other type;
};
#endif
#if !defined(BOOST_NO_CXX11_DECLTYPE_N3276)
template<class T, class E>

View File

@@ -56,7 +56,7 @@ struct P3 {
typedef int element_type;
template<class>
struct rebind { };
using rebind = P3;
};
template<class T>

View File

@@ -64,8 +64,15 @@ struct P2 {
struct P3 {
typedef int element_type;
#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
template<class>
struct rebind { };
using rebind = P3;
#else
template<class>
struct rebind {
typedef P3 other;
};
#endif
};
template<class T>