summaryrefslogtreecommitdiff
path: root/boost/type_traits/floating_point_promotion.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/type_traits/floating_point_promotion.hpp')
-rw-r--r--boost/type_traits/floating_point_promotion.hpp81
1 files changed, 5 insertions, 76 deletions
diff --git a/boost/type_traits/floating_point_promotion.hpp b/boost/type_traits/floating_point_promotion.hpp
index 8b6ae3a32a..993e14ef4b 100644
--- a/boost/type_traits/floating_point_promotion.hpp
+++ b/boost/type_traits/floating_point_promotion.hpp
@@ -6,86 +6,15 @@
#ifndef FILE_boost_type_traits_floating_point_promotion_hpp_INCLUDED
#define FILE_boost_type_traits_floating_point_promotion_hpp_INCLUDED
-#include <boost/config.hpp>
-
-#ifdef BOOST_NO_CV_SPECIALIZATIONS
-#include <boost/mpl/at.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/multiplies.hpp>
-#include <boost/mpl/plus.hpp>
-#include <boost/mpl/vector.hpp>
-#include <boost/type_traits/is_same.hpp>
-#endif
-
-// Should be the last #include
-#include <boost/type_traits/detail/type_trait_def.hpp>
-
namespace boost {
-namespace type_traits { namespace detail {
-
-#ifndef BOOST_NO_CV_SPECIALIZATIONS
-
-template<class T>
-struct floating_point_promotion
-{
- typedef T type;
-};
-
-template<>
-struct floating_point_promotion<float>
-{
- typedef double type;
-};
-
-template<>
-struct floating_point_promotion<float const>
-{
- typedef double const type;
-};
+ template<class T> struct floating_point_promotion { typedef T type; };
+ template<> struct floating_point_promotion<float> { typedef double type; };
+ template<> struct floating_point_promotion<float const> { typedef double const type; };
+ template<> struct floating_point_promotion<float volatile>{ typedef double volatile type; };
+ template<> struct floating_point_promotion<float const volatile> { typedef double const volatile type; };
-template<>
-struct floating_point_promotion<float volatile>
-{
- typedef double volatile type;
-};
-
-template<>
-struct floating_point_promotion<float const volatile>
-{
- typedef double const volatile type;
-};
-
-#else
-
-template<class T>
-struct floating_point_promotion
- : mpl::at<
- mpl::vector< T, double, double const, double volatile,
- double const volatile >
- , mpl::plus<
- is_same<T, float>
- , mpl::multiplies< is_same<T, float const> , mpl::int_<2> >
- , mpl::multiplies< is_same<T, float volatile> , mpl::int_<3> >
- , mpl::multiplies< is_same<T, float const volatile>, mpl::int_<4> >
- >
- >
-{
-};
-
-#endif
-
-} }
-
-BOOST_TT_AUX_TYPE_TRAIT_DEF1(
- floating_point_promotion
- , T
- , BOOST_DEDUCED_TYPENAME
- boost::type_traits::detail::floating_point_promotion<T>::type
- )
}
-#include <boost/type_traits/detail/type_trait_undef.hpp>
-
#endif // #ifndef FILE_boost_type_traits_floating_point_promotion_hpp_INCLUDED