[/ 
  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_cv remove_cv]

   template <class T>
   struct remove_cv
   {
      typedef __below type;
   };
  
__type The same type as `T`, but with any /top level/ cv-qualifiers removed.

__std_ref 3.9.3.

__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_cv.hpp>` or ` #include <boost/type_traits.hpp>`

[table Examples

[ [Expression] [Result Type]]

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

[[`remove_cv<int const>::type`] [`int`]]

[[`remove_cv<int const volatile>::type`] [`int`]]

[[`remove_cv<int const&>::type`] [`int const&`]]

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

]

[endsect]

