Merge pull request #391 from pah/fix/no-doc2value-move
Prohibit C++11 move from Document to Value
This commit is contained in:
commit
3003b841d5
@ -69,6 +69,9 @@ RAPIDJSON_NAMESPACE_BEGIN
|
|||||||
template <typename Encoding, typename Allocator>
|
template <typename Encoding, typename Allocator>
|
||||||
class GenericValue;
|
class GenericValue;
|
||||||
|
|
||||||
|
template <typename Encoding, typename Allocator, typename StackAllocator>
|
||||||
|
class GenericDocument;
|
||||||
|
|
||||||
//! Name-value pair in a JSON object value.
|
//! Name-value pair in a JSON object value.
|
||||||
/*!
|
/*!
|
||||||
This class was internal to GenericValue. It used to be a inner struct.
|
This class was internal to GenericValue. It used to be a inner struct.
|
||||||
@ -446,6 +449,16 @@ private:
|
|||||||
//! Copy constructor is not permitted.
|
//! Copy constructor is not permitted.
|
||||||
GenericValue(const GenericValue& rhs);
|
GenericValue(const GenericValue& rhs);
|
||||||
|
|
||||||
|
#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
|
||||||
|
//! Moving from a GenericDocument is not permitted.
|
||||||
|
template <typename StackAllocator>
|
||||||
|
GenericValue(GenericDocument<Encoding,Allocator,StackAllocator>&& rhs);
|
||||||
|
|
||||||
|
//! Move assignment from a GenericDocument is not permitted.
|
||||||
|
template <typename StackAllocator>
|
||||||
|
GenericValue& operator=(GenericDocument<Encoding,Allocator,StackAllocator>&& rhs);
|
||||||
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//! Constructor with JSON value type.
|
//! Constructor with JSON value type.
|
||||||
@ -1792,7 +1805,7 @@ public:
|
|||||||
#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
|
#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
|
||||||
//! Move constructor in C++11
|
//! Move constructor in C++11
|
||||||
GenericDocument(GenericDocument&& rhs) RAPIDJSON_NOEXCEPT
|
GenericDocument(GenericDocument&& rhs) RAPIDJSON_NOEXCEPT
|
||||||
: ValueType(std::move(rhs)),
|
: ValueType(std::forward<ValueType>(rhs)), // explicit cast to avoid prohibited move from Document
|
||||||
allocator_(rhs.allocator_),
|
allocator_(rhs.allocator_),
|
||||||
ownAllocator_(rhs.ownAllocator_),
|
ownAllocator_(rhs.ownAllocator_),
|
||||||
stack_(std::move(rhs.stack_)),
|
stack_(std::move(rhs.stack_)),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user