2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-27 07:02:15 +00:00

fixes for older KCCs

[SVN r13258]
This commit is contained in:
Dave Abrahams
2002-03-24 15:51:50 +00:00
parent 9d3d50c654
commit 516f30a307
2 changed files with 11 additions and 5 deletions

View File

@@ -245,9 +245,12 @@ namespace detail
template <class T, class Prev>
struct select_held_type
: mpl::select_type<
!(specifies_bases<T>::value | is_same<T,noncopyable>::value)
, T
, Prev
type_traits::ice_or<
type_traits::ice_not<specifies_bases<T>::value>::value
, is_same<T,noncopyable>::value
>::value
, T
, Prev
>
{
};

View File

@@ -22,8 +22,10 @@ namespace detail
template <class T, class Held>
struct select_value_holder
{
BOOST_STATIC_CONSTANT(bool, selector = (!is_same<T,Held>::value) | has_back_reference<T>::value);
typedef typename mpl::select_type<
(!is_same<T,Held>::value) | has_back_reference<T>::value
selector
, value_holder_back_reference<T,Held>
, value_holder<T>
>::type holder;
@@ -35,9 +37,10 @@ namespace detail
struct select_pointer_holder
{
typedef typename python::detail::pointee<Ptr>::type pointee;
BOOST_STATIC_CONSTANT(bool, selector = (!is_same<T,pointee>::value) | has_back_reference<T>::value);
typedef typename mpl::select_type<
(!is_same<pointee,T>::value) | has_back_reference<T>::value
selector
, pointer_holder_back_reference<Ptr,T>
, pointer_holder<Ptr,T>
>::type holder;