diff --git a/src/ArduinoJson/Array/ArrayData.hpp b/src/ArduinoJson/Array/ArrayData.hpp index c2ae1fb3..f0f3175d 100644 --- a/src/ArduinoJson/Array/ArrayData.hpp +++ b/src/ArduinoJson/Array/ArrayData.hpp @@ -19,10 +19,10 @@ class ArrayData : public CollectionData { } template - bool addValue(T&& value, ResourceManager* resources); + bool addValue(const T& value, ResourceManager* resources); template - static bool addValue(ArrayData* array, T&& value, + static bool addValue(ArrayData* array, const T& value, ResourceManager* resources) { if (!array) return false; diff --git a/src/ArduinoJson/Array/ArrayImpl.hpp b/src/ArduinoJson/Array/ArrayImpl.hpp index 9599a5eb..de261930 100644 --- a/src/ArduinoJson/Array/ArrayImpl.hpp +++ b/src/ArduinoJson/Array/ArrayImpl.hpp @@ -57,13 +57,13 @@ inline void ArrayData::removeElement(size_t index, ResourceManager* resources) { } template -inline bool ArrayData::addValue(T&& value, ResourceManager* resources) { +inline bool ArrayData::addValue(const T& value, ResourceManager* resources) { ARDUINOJSON_ASSERT(resources != nullptr); auto slot = resources->allocVariant(); if (!slot) return false; JsonVariant variant(slot.ptr(), resources); - if (!variant.set(detail::forward(value))) { + if (!variant.set(value)) { resources->freeVariant(slot); return false; } diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index 43ee4d80..e0afb68b 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -119,14 +119,13 @@ class VariantData { } template - bool addValue(T&& value, ResourceManager* resources) { + bool addValue(const T& value, ResourceManager* resources) { auto array = isNull() ? &toArray() : asArray(); - return detail::ArrayData::addValue(array, detail::forward(value), - resources); + return detail::ArrayData::addValue(array, value, resources); } template - static bool addValue(VariantData* var, T&& value, + static bool addValue(VariantData* var, const T& value, ResourceManager* resources) { if (!var) return false; diff --git a/src/ArduinoJson/Variant/VariantRefBase.hpp b/src/ArduinoJson/Variant/VariantRefBase.hpp index 2dc86d13..30ee3e3e 100644 --- a/src/ArduinoJson/Variant/VariantRefBase.hpp +++ b/src/ArduinoJson/Variant/VariantRefBase.hpp @@ -297,19 +297,18 @@ class VariantRefBase : public VariantTag { } template - bool doSet(T&& value) const { + bool doSet(const T& value) const { return doSet( - detail::forward(value), - is_same::return_type, - bool>{}); + value, is_same::return_type, + bool>{}); } template - bool doSet(T&& value, false_type) const; + bool doSet(const T& value, false_type) const; template - bool doSet(T&& value, true_type) const; + bool doSet(const T& value, true_type) const; ArduinoJson::JsonVariant getOrCreateVariant() const; }; diff --git a/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp b/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp index 4f22ffd4..f69e01d3 100644 --- a/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +++ b/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp @@ -140,7 +140,7 @@ VariantRefBase::operator[](const TString& key) const { template template -inline bool VariantRefBase::doSet(T&& value, false_type) const { +inline bool VariantRefBase::doSet(const T& value, false_type) const { TConverter::toJson(value, getOrCreateVariant()); auto resources = getResourceManager(); return resources && !resources->overflowed(); @@ -148,7 +148,7 @@ inline bool VariantRefBase::doSet(T&& value, false_type) const { template template -inline bool VariantRefBase::doSet(T&& value, true_type) const { +inline bool VariantRefBase::doSet(const T& value, true_type) const { return TConverter::toJson(value, getOrCreateVariant()); }