[/ 
  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:integral_promotion integral_promotion]

   template <class T>
   struct integral_promotion
   {
      typedef __below type;
   };
  
__type If integral promotion can be applied to an rvalue of type `T`, then
applies integral promotion to `T` and keeps cv-qualifiers of `T`,
otherwise leaves `T` unchanged.

__std_ref 4.5 except 4.5/3 (integral bit-field).

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

[table Examples

[ [Expression] [Result Type]]

[[`integral_promotion<short const>::type`][`int const`]]

[[`integral_promotion<short&>::type`][`short&`]]

[[`integral_promotion<enum std::float_round_style>::type`][`int`]]

]

[endsect]

