Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Boost.Python - <boost/python/pointee.hpp>

Boost.Python

Header

Contents

Introduction
Classes
Class Templatepointee
Class Template pointee synopsis
Example

Introduction

introduces a traits metafunction template pointee that can be used to extract the "pointed-to" type from the type of a pointer or smart pointer.

Classes

Class Template pointee

pointee 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  struct pointee
   {
      typedef T::element_type type;
   };

   // specialization for pointers
   template  struct pointee
   {
      typedef T type;
   };
}

Example

Given a 3rd-party smart pointer type smart_pointer, one might partially specialize pointee > so that it can be used as the HeldType for a class wrapper:
#include 
#include 
#include 

namespace boost { namespace python
{
  template  struct pointee<smart_pointer >
  {
     typedef T type;
  };
}}

BOOST_PYTHON_MODULE(pointee_demo)
{
   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)