diff --git a/src/ArduinoJson/Variant/VariantRef.hpp b/src/ArduinoJson/Variant/VariantRef.hpp index cd78673a..430866b8 100644 --- a/src/ArduinoJson/Variant/VariantRef.hpp +++ b/src/ArduinoJson/Variant/VariantRef.hpp @@ -48,6 +48,11 @@ class VariantRefBase : public VariantTag { return variantSize(_data); } + template + typename TVisitor::result_type accept(TVisitor &visitor) const { + return variantAccept(_data, visitor); + } + protected: VariantRefBase(TData *data) : _data(data) {} TData *_data; @@ -150,11 +155,6 @@ class VariantRef : public VariantRefBase, return as(); } - template - typename TVisitor::result_type accept(TVisitor &visitor) const { - return variantAccept(_data, visitor); - } - // Change the type of the variant // // ArrayRef to() @@ -242,11 +242,6 @@ class VariantConstRef : public VariantRefBase, VariantConstRef(const VariantData *data) : base_type(data) {} VariantConstRef(VariantRef var) : base_type(var._data) {} - template - typename TVisitor::result_type accept(TVisitor &visitor) const { - return variantAccept(_data, visitor); - } - template FORCE_INLINE typename enable_if::value && !is_same::value,