
On 2013-01-05 23:06:34 +0000, Marshall Clow said:
This is a bug in libc++; std::numeric_limits<>::max() is not marked as constexpr. This has been fixed in the libc++ trunk, and should appear in the next clang/libc++ release.
I faced this issue when patching the HPX library to compile on OS X a few weeks ago. FWIW, the trunk version of libc++ *does* use constexpr in std::numeric_limits. It's mostly the Xcode shipped version that doesn't offer the support. In the meantime, the following is a good idea IMO:
BTW, which version of libc++ are you using?
The one that ships with Xcode 4.5.2 - the most recent release from Apple. I don't believe that libc++ has a version number.
Yes there is such a macro in libc++, the most recent version being: #define _LIBCPP_VERSION 1101 (See: http://llvm.org/svn/llvm-project/libcxx/trunk/include/__config) The version number has been updating somewhat inconsistently but according to the SVN history, constexpr support should be there since (_LIBCPP_VERSION >= 1002). $ svn log -r153888 ------------------------------------------------------------------------ r153888 | hhinnant | 2012-04-02 22:23:15 +0300 (Mon, 02 Apr 2012) | 1 line Update <limits> with constexpr support. Patch contributed by Jonathan Sauer. ------------------------------------------------------------------------ $ svn log -r164700 ------------------------------------------------------------------------ r164700 | hhinnant | 2012-09-26 18:38:09 +0300 (Wed, 26 Sep 2012) | 1 line Bump _LIBCPP_VERSION to 1002 ------------------------------------------------------------------------ I'd recommend having: #if defined(_LIBCPP_VERSION) #if _LIBCPP_VERSION < 1002 #define BOOST_NO_CXX11_NUMERIC_LIMITS #endif #endif -- Pyry Jahkola pyry.jahkola@iki.fi https://twitter.com/pyrtsa