[/ 
  Copyright 2007 John Maddock.
  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).
]

[section:remove_pointer remove_pointer]

   template <class T>
   struct remove_pointer
   {
      typedef __below type;
   };
  
__type The same type as `T`, but with any pointer modifier removed.  Note that pointers to members are left unchanged: 
removing the pointer decoration would result in an invalid type.

__std_ref 8.3.1.

__compat If the compiler does not support partial specialization of class-templates
then this template will compile, but the member `type` will always be the same as 
type `T` except where __transform_workaround have been applied.

__header ` #include <boost/type_traits/remove_pointer.hpp>` or ` #include <boost/type_traits.hpp>`

[table Examples

[ [Expression] [Result Type]]

[[`remove_pointer<int>::type`][`int`]]

[[`remove_pointer<int const*>::type`] [`int const`]]

[[`remove_pointer<int const**>::type`] [`int const*`]]

[[`remove_pointer<int&>::type`] [`int&`]]

[[`remove_pointer<int*&>::type`] [`int*&`]]

]

[endsect]

