Skip to content

Commit d252eb0

Browse files
committed
Fix building rapidjson with clang on windows
1 parent 29bf331 commit d252eb0

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

rapidjson/rapidjson.h

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,19 @@
119119
#define RAPIDJSON_NAMESPACE_END }
120120
#endif
121121

122+
///////////////////////////////////////////////////////////////////////////////
123+
// __cplusplus macro
124+
125+
//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
126+
127+
#if defined(_MSC_VER)
128+
#define RAPIDJSON_CPLUSPLUS _MSVC_LANG
129+
#else
130+
#define RAPIDJSON_CPLUSPLUS __cplusplus
131+
#endif
132+
133+
//!@endcond
134+
122135
///////////////////////////////////////////////////////////////////////////////
123136
// RAPIDJSON_HAS_STDSTRING
124137

@@ -527,8 +540,14 @@ RAPIDJSON_NAMESPACE_END
527540
///////////////////////////////////////////////////////////////////////////////
528541
// C++11 features
529542

543+
#ifndef RAPIDJSON_HAS_CXX11
544+
#define RAPIDJSON_HAS_CXX11 (RAPIDJSON_CPLUSPLUS >= 201103L)
545+
#endif
546+
530547
#ifndef RAPIDJSON_HAS_CXX11_RVALUE_REFS
531-
#if defined(__clang__)
548+
#if RAPIDJSON_HAS_CXX11
549+
#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
550+
#elif defined(__clang__)
532551
#if __has_feature(cxx_rvalue_references) && \
533552
(defined(_LIBCPP_VERSION) || defined(__GLIBCXX__) && __GLIBCXX__ >= 20080306)
534553
#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
@@ -545,7 +564,9 @@ RAPIDJSON_NAMESPACE_END
545564
#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
546565

547566
#ifndef RAPIDJSON_HAS_CXX11_NOEXCEPT
548-
#if defined(__clang__)
567+
#if RAPIDJSON_HAS_CXX11
568+
#define RAPIDJSON_HAS_CXX11_NOEXCEPT 1
569+
#elif defined(__clang__)
549570
#define RAPIDJSON_HAS_CXX11_NOEXCEPT __has_feature(cxx_noexcept)
550571
#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__))
551572
// (defined(_MSC_VER) && _MSC_VER >= ????) // not yet supported
@@ -562,8 +583,12 @@ RAPIDJSON_NAMESPACE_END
562583

563584
// no automatic detection, yet
564585
#ifndef RAPIDJSON_HAS_CXX11_TYPETRAITS
586+
#if (defined(_MSC_VER) && _MSC_VER >= 1700)
587+
#define RAPIDJSON_HAS_CXX11_TYPETRAITS 1
588+
#else
565589
#define RAPIDJSON_HAS_CXX11_TYPETRAITS 0
566590
#endif
591+
#endif
567592

568593
#ifndef RAPIDJSON_HAS_CXX11_RANGE_FOR
569594
#if defined(__clang__)

0 commit comments

Comments
 (0)