math_overloads.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 59 行

HPP
59
字号
//  (C) Copyright John Maddock 2005.//  Use, modification and distribution are subject to 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)#ifndef BOOST_TR1_MATH_OVERLOADS_HPP_INCLUDED#  define BOOST_TR1_MATH_OVERLOADS_HPP_INCLUDED#  include <boost/config.hpp>#  ifndef BOOST_NO_SFINAE#     include <boost/utility/enable_if.hpp>#     include <boost/type_traits/is_convertible.hpp>#     define BOOST_TR1_MATH_RETURN(RET) typename ::boost::enable_if< ::boost::is_convertible<T,double>, RET >::type#  else#     define BOOST_TR1_MATH_RETURN(RET) RET#  endif#  include <boost/type_traits/is_floating_point.hpp>#  include <boost/type_traits/is_same.hpp>#  include <boost/mpl/if.hpp>namespace boost{ namespace tr1_detail{template <class T, class U>struct largest_real{   typedef typename boost::mpl::if_<      boost::is_same<long double, T>,      long double,      typename boost::mpl::if_<         boost::is_same<long double, U>,         long double,         typename boost::mpl::if_<            boost::is_same<double, T>,            double,            typename boost::mpl::if_<               boost::is_same<double, U>,               double,               float            >::type         >::type      >::type   >::type type;};template <class T, class U>struct promote_to_real{   typedef typename largest_real<      typename boost::mpl::if_< boost::is_floating_point<T>, T, double>::type,      typename boost::mpl::if_< boost::is_floating_point<U>, U, double>::type   >::type type;};} }#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?