diff --git a/src/c_wrapper/utils.h b/src/c_wrapper/utils.h
index 2cc22b39a4b5f402280479fdfb373aef6f5fb59c..bd39f4df4d5495b50f33a3d6e15664b7a6aa677f 100644
--- a/src/c_wrapper/utils.h
+++ b/src/c_wrapper/utils.h
@@ -398,6 +398,18 @@ public:
         this->reset((T*)realloc((void*)this->release(),
                                 (len + 1) * sizeof(T)));
     }
+    template<ArgType AT=ArgType::Length>
+    PYOPENCL_INLINE ArgBuffer<T, AT>
+    to_arg()
+    {
+        return ArgBuffer<T, AT>(this->get(), m_len);
+    }
+    template<ArgType AT=ArgType::Length>
+    PYOPENCL_INLINE ArgBuffer<const T, AT>
+    to_arg() const
+    {
+        return ArgBuffer<const T, AT>(this->get(), m_len);
+    }
 };
 
 template<typename Buff>