1 // Copyright David Abrahams 2002.
2 // Distributed under the Boost Software License, Version 1.0. (See
3 // accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
5 #ifndef POINTEE_DWA2002323_HPP
6 # define POINTEE_DWA2002323_HPP
7 
8 # include <boost/python/detail/type_traits.hpp>
9 
10 namespace boost { namespace python { namespace detail {
11 
12 template <bool is_ptr = true>
13 struct pointee_impl
14 {
15     template <class T> struct apply : remove_pointer<T> {};
16 };
17 
18 template <>
19 struct pointee_impl<false>
20 {
21     template <class T> struct apply
22     {
23         typedef typename T::element_type type;
24     };
25 };
26 
27 template <class T>
28 struct pointee
29     : pointee_impl<is_pointer<T>::value>::template apply<T>
30 {
31 };
32 
33 }}} // namespace boost::python::detail
34 
35 #endif // POINTEE_DWA2002323_HPP
36