[/ 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:promote promote] template struct promote { typedef __below type; }; template using promote_t = typename promote::type; // C++11 and above __type If integral or floating point promotion can be applied to an rvalue of type `T`, then applies integral and floating point promotions to `T` and keeps cv-qualifiers of `T`, otherwise leaves `T` unchanged. See also __integral_promotion and __floating_point_promotion. __std_ref 4.5 except 4.5/3 (integral bit-field) and 4.6. [all_compilers] __header ` #include ` or ` #include ` [table Examples [ [Expression] [Result Type]] [[`promote::type`][`int volatile`]] [[`promote::type`][`double const`]] [[`promote::type`][`short&`]] ] [endsect]