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/prefix.hpp>
9
10# include <boost/type_traits/object_traits.hpp>
11# include <boost/type_traits/remove_pointer.hpp>
12
13namespace boost { namespace python {
14
15namespace detail
16{
17 template <bool is_ptr = true>
18 struct pointee_impl
19 {
20 template <class T> struct apply : remove_pointer<T> {};
21 };
22
23 template <>
24 struct pointee_impl<false>
25 {
26 template <class T> struct apply
27 {
28 typedef typename T::element_type type;
29 };
30 };
31}
32
33template <class T>
34struct pointee
35 : detail::pointee_impl<
36 ::boost::is_pointer<T>::value
37 >::template apply<T>
38{
39};
40
41}} // namespace boost::python::detail
42
43#endif // POINTEE_DWA2002323_HPP
44

source code of boost/boost/python/pointee.hpp