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

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

__std_ref 4.6.

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

[table Examples

[ [Expression] [Result Type]]

[[`floating_point_promotion<float const>::type`][`double const`]]

[[`floating_point_promotion<float&>::type`][`float&`]]

[[`floating_point_promotion<short>::type`][`short`]]

]

[endsect]

