| Home | Libraries | People | FAQ | More

## Struct template pointer_traits<T *>

boost::intrusive::pointer_traits<T *>

## Synopsis

    // In header: <boost/intrusive/pointer_traits.hpp>

    template<typename T>
    struct pointer_traits<T *> {
      // types
      typedef T              element_type;
      typedef T *            pointer;
      typedef std::ptrdiff_t difference_type;
      typedef T &            reference;
      typedef U *            rebind;

      // member classes/structs/unions
      template<typename U>
      struct rebind_pointer {
        // types
        typedef U * type;
      };

      // public static functions
      static pointer pointer_to(reference);
      template<typename U> static pointer static_cast_from(U *);
      template<typename U> static pointer const_cast_from(U *);
      template<typename U> static pointer dynamic_cast_from(U *);
    };

## Description

Specialization of pointer_traits for raw pointers

### `pointer_traits` public types

1. typedef U * rebind;

   typedef for <preformatted>U *</preformatted>

   For portable code for C++03 and C++11, <preformatted>typename rebind_pointer<U>::type</preformatted> shall be used instead of rebind<U> to obtain a pointer to U.

### `pointer_traits` public static functions

1.     static pointer pointer_to(reference r);

   Returns: addressof(r)

2.     template<typename U> static pointer static_cast_from(U * uptr);

   Returns: static_cast<pointer>(uptr)

3.     template<typename U> static pointer const_cast_from(U * uptr);

   Returns: const_cast<pointer>(uptr)

4.     template<typename U> static pointer dynamic_cast_from(U * uptr);

   Returns: dynamic_cast<pointer>(uptr)