|  | 
          <boost/python/pointee.hpp> introduces a traits metafunction template pointee<T> that can be used to extract the "pointed-to"
          type from the type of a pointer or smart pointer.
        
          pointee<T>
          is used by the class_<...>
          template to deduce the type being held when a pointer or smart pointer
          type is used as its HeldType argument.
        
namespace boost { namespace python { template <class T> struct pointee { typedef T::element_type type; }; // specialization for pointers template <T> struct pointee<T*> { typedef T type; }; }
          Given a 3rd-party smart pointer type smart_pointer<T>, one might partially specialize pointee<smart_pointer<T> > so that it can be used as the HeldType
          for a class wrapper:
        
#include <boost/python/pointee.hpp> #include <boost/python/class.hpp> #include <third_party_lib.hpp> namespace boost { namespace python { template <class T> struct pointee<smart_pointer<T> > { typedef T type; }; }} BOOST_PYTHON_MODULE(pointee_demo) { class_<third_party_class, smart_pointer<third_party_class> >("third_party_class") .def(...) ... ; }