| 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 std::size_t    size_type;
      typedef T &            reference;
      template<typename U>
      using rebind = U *;

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

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

## Description

Specialization of pointer_traits for raw pointers

### `pointer_traits` public types

1. template<typename U> using rebind = U *;

       U *

   For portable code for C++03 and C++11,

       typename rebind_pointer<U>::type

   shall be used instead of rebind<underline> to obtain a pointer to U. </underline>

### `pointer_traits` public static functions

1.     static pointer pointer_to(reference r) noexcept;

   Returns: addressof(r)

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

   Returns: static_cast<pointer>(uptr)

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

   Returns: const_cast<pointer>(uptr)

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

   Returns: dynamic_cast<pointer>(uptr)