diff --git a/redfish-core/include/utils/json_utils.hpp b/redfish-core/include/utils/json_utils.hpp
index d335878..0e20bd1 100644
--- a/redfish-core/include/utils/json_utils.hpp
+++ b/redfish-core/include/utils/json_utils.hpp
@@ -561,7 +561,7 @@
 
             result =
                 std::visit(
-                    [&item, &unpackSpec, &res](auto&& val) {
+                    [&item, &unpackSpec, &res](auto& val) {
                         using ContainedT =
                             std::remove_pointer_t<std::decay_t<decltype(val)>>;
                         return details::unpackValue<ContainedT>(
@@ -586,7 +586,7 @@
         if (!perUnpack.complete)
         {
             bool isOptional = std::visit(
-                [](auto&& val) {
+                [](auto& val) {
                     using ContainedType =
                         std::remove_pointer_t<std::decay_t<decltype(val)>>;
                     return details::IsOptional<ContainedType>::value;
@@ -621,7 +621,7 @@
 
 template <typename FirstType, typename... UnpackTypes>
 void packVariant(std::span<PerUnpack> toPack, std::string_view key,
-                 FirstType& first, UnpackTypes&&... in)
+                 FirstType&& first, UnpackTypes&&... in)
 {
     if (toPack.empty())
     {
@@ -640,7 +640,8 @@
 {
     const std::size_t n = sizeof...(UnpackTypes) + 2;
     std::array<PerUnpack, n / 2> toUnpack2;
-    packVariant(toUnpack2, key, first, std::forward<UnpackTypes&&>(in)...);
+    packVariant(toUnpack2, key, std::forward<FirstType>(first),
+                std::forward<UnpackTypes&&>(in)...);
     return readJsonHelperObject(jsonRequest, res, toUnpack2);
 }
 
