overload append function for R value references.
diff --git a/include/json/value.h b/include/json/value.h
index 4aefb10..6b40831 100644
--- a/include/json/value.h
+++ b/include/json/value.h
@@ -447,6 +447,10 @@
   /// Equivalent to jsonvalue[jsonvalue.size()] = value;
   Value& append(const Value& value);
 
+#ifdef JSON_HAS_RVALUE_REFERENCES
+  Value& append(Value&& value);
+#endif
+
   /// Access an object value by name, create a null member if it does not exist.
   /// \note Because of our implementation, keys are limited to 2^30 -1 chars.
   ///  Exceeding that will cause an exception.
diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp
index 49b88f9..adae5a1 100644
--- a/src/lib_json/json_value.cpp
+++ b/src/lib_json/json_value.cpp
@@ -1145,6 +1145,10 @@
 
 Value& Value::append(const Value& value) { return (*this)[size()] = value; }
 
+#ifdef JSON_HAS_RVALUE_REFERENCES
+  Value& Value::append(Value&& value) { return (*this)[size()] = value; }
+#endif
+
 Value Value::get(char const* key, char const* cend, Value const& defaultValue) const
 {
   Value const* found = find(key, cend);