From f84f27c366cc5028587efc1e34808f141ab77861 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 26 Mar 2016 19:09:44 +0000 Subject: [PATCH] Update for clang on Windows: Enables __int64 when available. Enables stdint.h when available. Enables log1p/expm1 when available. Enables char16_t and char32_t when available. --- include/boost/config/compiler/clang.hpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 01355bb7..a1463a0d 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -39,10 +39,15 @@ # define BOOST_NO_TYPEID #endif -#if defined(__int64) && !defined(__GNUC__) +#if !__is_identifier(__int64) && !defined(__GNUC__) # define BOOST_HAS_MS_INT64 #endif +#if __has_include() +# define BOOST_HAS_STDINT_H +#endif + + #define BOOST_HAS_NRVO // Branch prediction hints @@ -107,11 +112,16 @@ // // Currently clang on Windows using VC++ RTL does not support C++11's char16_t or char32_t // -#if defined(_MSC_VER) || !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) +#if (defined(_MSC_VER) && (_MSC_VER < 1900)) || !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) # define BOOST_NO_CXX11_CHAR16_T # define BOOST_NO_CXX11_CHAR32_T #endif +#if defined(_MSC_VER) && (_MSC_VER >= 1800) && !defined(__GNUC__) +#define BOOST_HAS_EXPM1 +#define BOOST_HAS_LOG1P +#endif + #if !__has_feature(cxx_constexpr) # define BOOST_NO_CXX11_CONSTEXPR #endif