C++ Boost

Boost.Python

Header <boost/python/pointee.hpp>


Contents

Introduction
Classes
Class Templatepointee
Class Template pointee synopsis
Example

Introduction

<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.

Classes

Class Template pointee<class T>

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.

Class Template pointee synopsis

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;
   };
}

Example

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

Revised 13 November, 2002

© Copyright Dave Abrahams 2002. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)