From e4652bee60cb8930f3199110a38e73e623a38579 Mon Sep 17 00:00:00 2001
From: Yichao Yu <yyc1992@gmail.com>
Date: Sun, 22 Jun 2014 11:31:41 +0800
Subject: [PATCH] more flexible len_arg and size_arg

---
 src/c_wrapper/utils.h | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/c_wrapper/utils.h b/src/c_wrapper/utils.h
index d500544c..32c7beaf 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>
-- 
GitLab