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