diff --git a/src/c_wrapper/utils.h b/src/c_wrapper/utils.h
index d500544c684e1bfd67e2ff654c683600a598da74..32c7beaf4130b1eebdae0e919f64a92fe36873a8 100644
--- a/src/c_wrapper/utils.h
+++ b/src/c_wrapper/utils.h
@@ -266,18 +266,20 @@ buf_arg(T *buf, size_t l)
     return ArgBuffer<T, AT>(buf, l);
 }
 
-template<typename T>
+template<typename... T>
 static PYOPENCL_INLINE auto
-size_arg(T &&buf) -> decltype(buf_arg<ArgType::SizeOf>(std::forward<T>(buf)))
+size_arg(T&&... buf)
+    -> decltype(buf_arg<ArgType::SizeOf>(std::forward<T>(buf)...))
 {
-    return buf_arg<ArgType::SizeOf>(std::forward<T>(buf));
+    return buf_arg<ArgType::SizeOf>(std::forward<T>(buf)...);
 }
 
-template<typename T>
+template<typename... T>
 static PYOPENCL_INLINE auto
-len_arg(T &&buf) -> decltype(buf_arg<ArgType::Length>(std::forward<T>(buf)))
+len_arg(T&&... buf)
+    -> decltype(buf_arg<ArgType::Length>(std::forward<T>(buf)...))
 {
-    return buf_arg<ArgType::Length>(std::forward<T>(buf));
+    return buf_arg<ArgType::Length>(std::forward<T>(buf)...);
 }
 
 template<typename Buff, class = void>