diff options
Diffstat (limited to 'boost/type_traits/floating_point_promotion.hpp')
-rw-r--r-- | boost/type_traits/floating_point_promotion.hpp | 81 |
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 |