[MacPorts] #36960: boost @1.52.0 build error in chrono caused by CONSTEXPR

MacPorts noreply at macports.org
Sun Nov 11 12:11:17 PST 2012


#36960: boost @1.52.0 build error in chrono caused by CONSTEXPR
------------------------------+--------------------------------
 Reporter:  alain.dewagter@…  |      Owner:  macports-tickets@…
     Type:  defect            |     Status:  new
 Priority:  Normal            |  Milestone:
Component:  ports             |    Version:  2.1.2
 Keywords:  boost,chrono      |       Port:  boost
------------------------------+--------------------------------
 I updated boost port to to version 1.52.0 (@99457), and now I get this
 compiling error:

 {{{
   error: constexpr function never produces a constant expression
 }}}

 in include/boost/chrono/duration.hpp at lines starting with ">>":

 {{{
     template <>
     struct chrono_numeric_limits<float,true> {
 >>   static BOOST_CHRONO_LIB_CONSTEXPR float lowest()
 BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW
         {
             return -(std::numeric_limits<float>::max) ();
         }
     };

     template <>
     struct chrono_numeric_limits<double,true> {
 >>   static BOOST_CHRONO_LIB_CONSTEXPR double lowest()
 BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW
         {
             return -(std::numeric_limits<double>::max) ();
         }
     };

     template <>
     struct chrono_numeric_limits<long double,true> {
 >>   static BOOST_CHRONO_LIB_CONSTEXPR long double lowest()
 BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW
         {
             return -(std::numeric_limits<long double>::max)();
         }
     };
 }}}


 I reverted to version 1.51.0, as it works fine on this version which has
 this code:


 {{{
 namespace detail {
     template <class T, bool = is_arithmetic<T>::value>
     struct chrono_numeric_limits {
         static T lowest() throw() {return (std::numeric_limits<T>::min)
 ();}
     };

     template <class T>
     struct chrono_numeric_limits<T,true> {
         static T lowest() throw() {return (std::numeric_limits<T>::min)
 ();}
     };

     template <>
     struct chrono_numeric_limits<float,true> {
         static float lowest() throw()
         {
             return -(std::numeric_limits<float>::max) ();
         }
     };

     template <>
     struct chrono_numeric_limits<double,true> {
         static double lowest() throw()
         {
             return -(std::numeric_limits<double>::max) ();
         }
     };

     template <>
     struct chrono_numeric_limits<long double,true> {
         static long double lowest() throw()
         {
             return -(std::numeric_limits<long double>::max)();
         }
     };

     template <class T>
     struct numeric_limits : chrono_numeric_limits<typename
 remove_cv<T>::type>
     {};

 }
 }}}


 I am using the latest version for OSX and Xcode:
   OS: 10.8.2 (12C60)

   Xcode: 4.5.2 (4G2008a)

 Please update the port to fix this issue.

 Thank you!
 Alain

-- 
Ticket URL: <https://trac.macports.org/ticket/36960>
MacPorts <http://www.macports.org/>
Ports system for Mac OS


More information about the macports-tickets mailing list