diff --git a/include/sdbusplus/async/stdexec/__detail/__domain.hpp b/include/sdbusplus/async/stdexec/__detail/__domain.hpp
index 07a7d25..3b72e9e 100644
--- a/include/sdbusplus/async/stdexec/__detail/__domain.hpp
+++ b/include/sdbusplus/async/stdexec/__detail/__domain.hpp
@@ -44,7 +44,7 @@
 {
     template <class _Tag, class _Data, class... _Children>
         requires __has_legacy_c11n<_Tag, _Data, _Children...>
-    decltype(auto) operator()(_Tag, _Data && __data,
+    decltype(auto) operator()(_Tag, _Data&& __data,
                               _Children&&... __children) const
     {
         return __legacy_c11n_fn<_Tag, _Data, _Children...>()(
diff --git a/include/sdbusplus/async/stdexec/__detail/__env.hpp b/include/sdbusplus/async/stdexec/__detail/__env.hpp
index 8d16b3b..0b2e7f1 100644
--- a/include/sdbusplus/async/stdexec/__detail/__env.hpp
+++ b/include/sdbusplus/async/stdexec/__detail/__env.hpp
@@ -457,7 +457,7 @@
     }
 
     template <class _Env, class _Base>
-    decltype(auto) operator()(_Env && __env, _Base && __base) const noexcept
+    decltype(auto) operator()(_Env&& __env, _Base&& __base) const noexcept
     {
         using __env_t = __decay_t<_Env>;
         using __base_t = __decay_t<_Base>;
@@ -476,7 +476,7 @@
     }
 
     template <class _Env0, class _Env1, class _Env2, class... _Envs>
-    decltype(auto) operator()(_Env0 && __env0, _Env1 && __env1, _Env2 && __env2,
+    decltype(auto) operator()(_Env0&& __env0, _Env1&& __env1, _Env2&& __env2,
                               _Envs&&... __envs) const noexcept
     {
         const auto& __join_env = *this;
diff --git a/include/sdbusplus/async/stdexec/__detail/__meta.hpp b/include/sdbusplus/async/stdexec/__detail/__meta.hpp
index b339405..14c5bf2 100644
--- a/include/sdbusplus/async/stdexec/__detail/__meta.hpp
+++ b/include/sdbusplus/async/stdexec/__detail/__meta.hpp
@@ -1137,7 +1137,7 @@
 {
     template <class _Ty>
     STDEXEC_ATTRIBUTE((always_inline)) //
-    constexpr decltype(auto) operator()(_Ty && __ty) const noexcept
+    constexpr decltype(auto) operator()(_Ty&& __ty) const noexcept
     {
         return ((_Ty&&)__ty).*(__ty.__mbrs_.template __nth<_Np>());
     }
diff --git a/include/sdbusplus/async/stdexec/execution.hpp b/include/sdbusplus/async/stdexec/execution.hpp
index 8900d56..dce1a9f 100644
--- a/include/sdbusplus/async/stdexec/execution.hpp
+++ b/include/sdbusplus/async/stdexec/execution.hpp
@@ -653,8 +653,8 @@
 {
     template <class _Domain, class _Sender, class _Env>
     STDEXEC_ATTRIBUTE((always_inline))
-    /*constexpr*/ decltype(auto) operator()(_Domain __dom, _Sender && __sndr,
-                                            _Env && __env) const noexcept
+    /*constexpr*/ decltype(auto) operator()(_Domain __dom, _Sender&& __sndr,
+                                            _Env&& __env) const noexcept
     {
         if constexpr (__domain::__has_transform_env<_Domain, _Sender, _Env>)
         {
@@ -672,7 +672,7 @@
 {
     template <class _Domain, class _Sender, class... _Env>
     STDEXEC_ATTRIBUTE((always_inline))
-    /*constexpr*/ decltype(auto) operator()(_Domain __dom, _Sender && __sndr,
+    /*constexpr*/ decltype(auto) operator()(_Domain __dom, _Sender&& __sndr,
                                             const _Env&... __env) const
     {
         if constexpr (__domain::__has_transform_sender<_Domain, _Sender,
@@ -696,7 +696,7 @@
     template <class _Self = __transform_sender, class _Domain, class _Sender,
               class... _Env>
     STDEXEC_ATTRIBUTE((always_inline))
-    /*constexpr*/ decltype(auto) operator()(_Domain __dom, _Sender && __sndr,
+    /*constexpr*/ decltype(auto) operator()(_Domain __dom, _Sender&& __sndr,
                                             const _Env&... __env) const
     {
         using _Sender2 = __call_result_t<__transform_sender_1, _Domain, _Sender,
@@ -727,8 +727,8 @@
     // requested domain.
     template <class _Domain, sender_expr _Sender, class _Env>
         requires same_as<__early_domain_of_t<_Sender>, dependent_domain>
-    /*constexpr*/ decltype(auto) operator()(_Domain __dom, _Sender && __sndr,
-                                            const _Env & __env) const
+    /*constexpr*/ decltype(auto) operator()(_Domain __dom, _Sender&& __sndr,
+                                            const _Env& __env) const
     {
         static_assert(__none_of<_Domain, dependent_domain>);
         return __transform_sender()(
@@ -820,7 +820,7 @@
         requires __has_implementation_for<_Tag, _Domain, _Sender, _Args...>
     STDEXEC_ATTRIBUTE((always_inline))
         /*constexpr*/ decltype(auto)
-            operator()(_Domain __dom, _Tag, _Sender && __sndr,
+            operator()(_Domain __dom, _Tag, _Sender&& __sndr,
                        _Args&&... __args) const
     {
         if constexpr (__domain::__has_apply_sender<_Domain, _Tag, _Sender,
