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