PrevUpHomeNext

boost/python/pointee.hpp

Introduction
Class template pointee
Examples

<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(...)
      ...
      ;
}

PrevUpHomeNext