detect rvalue reference support (RAPIDJSON_HAS_CXX11_RVALUE_REFS)
This commit is contained in:
parent
a16fe366ed
commit
5656078a38
@ -416,7 +416,7 @@ public:
|
|||||||
//! Default constructor creates a null value.
|
//! Default constructor creates a null value.
|
||||||
GenericValue() : data_(), flags_(kNullFlag) {}
|
GenericValue() : data_(), flags_(kNullFlag) {}
|
||||||
|
|
||||||
#ifdef RAPIDJSON_CXX11
|
#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
|
||||||
//! Move constructor in C++11
|
//! Move constructor in C++11
|
||||||
GenericValue(GenericValue&& rhs) : data_(rhs.data_), flags_(rhs.flags_) {
|
GenericValue(GenericValue&& rhs) : data_(rhs.data_), flags_(rhs.flags_) {
|
||||||
rhs.flags_ = kNullFlag; // give up contents
|
rhs.flags_ = kNullFlag; // give up contents
|
||||||
@ -574,7 +574,7 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RAPIDJSON_CXX11
|
#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
|
||||||
//! Move assignment in C++11
|
//! Move assignment in C++11
|
||||||
GenericValue& operator=(GenericValue&& rhs) {
|
GenericValue& operator=(GenericValue&& rhs) {
|
||||||
return *this = rhs.Move();
|
return *this = rhs.Move();
|
||||||
|
@ -34,7 +34,7 @@ RAPIDJSON_DIAG_PUSH
|
|||||||
RAPIDJSON_DIAG_OFF(6334)
|
RAPIDJSON_DIAG_OFF(6334)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RAPIDJSON_HAS_CXX11_TYPETRAITS
|
#if RAPIDJSON_HAS_CXX11_TYPETRAITS
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ template <typename T> struct IsPointer<T*> : TrueType {};
|
|||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// IsBaseOf
|
// IsBaseOf
|
||||||
//
|
//
|
||||||
#ifdef RAPIDJSON_HAS_CXX11_TYPETRAITS
|
#if RAPIDJSON_HAS_CXX11_TYPETRAITS
|
||||||
|
|
||||||
template <typename B, typename D> struct IsBaseOf
|
template <typename B, typename D> struct IsBaseOf
|
||||||
: BoolType< ::std::is_base_of<B,D>::value> {};
|
: BoolType< ::std::is_base_of<B,D>::value> {};
|
||||||
|
@ -357,6 +357,26 @@ template<int x> struct StaticAssertTest {};
|
|||||||
|
|
||||||
#endif // RAPIDJSON_DIAG_*
|
#endif // RAPIDJSON_DIAG_*
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// C++11 features
|
||||||
|
|
||||||
|
#ifndef RAPIDJSON_HAS_CXX11_RVALUE_REFS
|
||||||
|
#if defined(__clang__)
|
||||||
|
#define RAPIDJSON_HAS_CXX11_RVALUE_REFS __has_feature(cxx_rvalue_references)
|
||||||
|
#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,3,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
|
||||||
|
(defined(_MSC_VER) && _MSC_VER >= 1600)
|
||||||
|
|
||||||
|
#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
|
||||||
|
#else
|
||||||
|
#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0
|
||||||
|
#endif
|
||||||
|
#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
|
||||||
|
|
||||||
|
// no automatic detection, yet
|
||||||
|
#ifndef RAPIDJSON_HAS_CXX11_TYPETRAITS
|
||||||
|
#define RAPIDJSON_HAS_CXX11_TYPETRAITS 0
|
||||||
|
#endif
|
||||||
|
|
||||||
//!@endcond
|
//!@endcond
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
x
Reference in New Issue
Block a user