From 5fb06596a93f62e98fb9900dac2f1c97e5981549 Mon Sep 17 00:00:00 2001 From: bluehero Date: Mon, 7 Aug 2017 11:44:27 +0800 Subject: [PATCH] modify --- include/rapidjson/document.h | 4 +--- test/unittest/documenttest.cpp | 12 ++++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/include/rapidjson/document.h b/include/rapidjson/document.h index f5c02d6..869667a 100644 --- a/include/rapidjson/document.h +++ b/include/rapidjson/document.h @@ -2168,8 +2168,7 @@ public: } #endif - // Allow assignment from ValueType. - // Refer to Effective C++ 3rd Edition/Item 33: Avoid hiding inherited names. + // Allow assignment like a ValueType. using ValueType::operator=; //! Exchange the contents of this document with those of another. @@ -2188,7 +2187,6 @@ public: } // Allow Swap from ValueType. - // Refer to Effective C++ 3rd Edition/Item 33: Avoid hiding inherited names. using ValueType::Swap; //! free-standing swap function helper diff --git a/test/unittest/documenttest.cpp b/test/unittest/documenttest.cpp index 9ff8096..0d08b25 100644 --- a/test/unittest/documenttest.cpp +++ b/test/unittest/documenttest.cpp @@ -661,17 +661,25 @@ TYPED_TEST(DocumentMove, MoveAssignmentStack) { // Issue 22: Memory corruption via operator= from Document // Fixed by making unimplemented assignment operator private. -// Prohibit assignment from Document, But allow assignment from Value +// Prohibit assignment from Document. +// But allow assignment from ValueType/int/double/..., like a ValueType TEST(Document, Assignment) { // Document d1; // Document d2; // d1 = d2; - Value x(1234); Document d; + + Value x(1234); d = x; EXPECT_TRUE(x.IsNull()); // move semantic EXPECT_EQ(1234, d.GetInt()); + + d = 1; + EXPECT_EQ(1, d.GetInt()); + + d = 12.34; + EXPECT_NEAR(12.34, d.GetDouble(), 0.0); } #ifdef __clang__