From f3ee7e633252bdd7369cce902ff6a3c7b99436be Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Sun, 13 Dec 2015 19:38:50 +0530
Subject: [PATCH] Fix Visual Studio 2015 (64-bit) (patch by Christoph Gohlke
 and Yuyi Chao)

---
 src/c_wrapper/buffer.cpp | 1 +
 src/c_wrapper/function.h | 2 +-
 src/c_wrapper/gl_obj.cpp | 4 ++--
 src/c_wrapper/wrap_cl.h  | 1 +
 4 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/c_wrapper/buffer.cpp b/src/c_wrapper/buffer.cpp
index 22d7ec1c..70e1ff3e 100644
--- a/src/c_wrapper/buffer.cpp
+++ b/src/c_wrapper/buffer.cpp
@@ -1,3 +1,4 @@
+#include <algorithm>
 #include "buffer.h"
 #include "context.h"
 #include "command_queue.h"
diff --git a/src/c_wrapper/function.h b/src/c_wrapper/function.h
index 89869918..40525a13 100644
--- a/src/c_wrapper/function.h
+++ b/src/c_wrapper/function.h
@@ -50,7 +50,7 @@ call_tuple(Function &&func, T &&args)
 }
 
 template<template<typename...> class Convert, typename... Types>
-using _ArgPackBase = std::tuple<Convert<rm_ref_t<Types> >...>;
+using _ArgPackBase = std::tuple<Convert<typename std::remove_reference<Types>::type>...>;
 
 template<template<typename...> class Convert, typename... Types>
 class ArgPack : public _ArgPackBase<Convert, Types...> {
diff --git a/src/c_wrapper/gl_obj.cpp b/src/c_wrapper/gl_obj.cpp
index 27525ce9..ad5cf5ba 100644
--- a/src/c_wrapper/gl_obj.cpp
+++ b/src/c_wrapper/gl_obj.cpp
@@ -60,9 +60,9 @@ enqueue_gl_objects(clEnqueueGLObjectFunc func, const char *name,
         mem_objects, num_mem_objects);
     call_guarded(func, name, cq, _mem_objs, _wait_for, event_out(evt));
 }
-#define enqueue_gl_objects(what, args...)                       \
+#define enqueue_gl_objects(what, ...)                       \
     enqueue_gl_objects(clEnqueue##what##GLObjects,              \
-                       "clEnqueue" #what "GLObjects", args)
+                       "clEnqueue" #what "GLObjects", __VA_ARGS__)
 
 // c wrapper
 
diff --git a/src/c_wrapper/wrap_cl.h b/src/c_wrapper/wrap_cl.h
index c1feb22a..cb8b4219 100644
--- a/src/c_wrapper/wrap_cl.h
+++ b/src/c_wrapper/wrap_cl.h
@@ -34,6 +34,7 @@
 #define NOMINMAX
 #include <windows.h>
 #define strdup _strdup
+#define strcasecmp _stricmp
 #else
 #include <unistd.h>
 #define PYOPENCL_HAVE_EVENT_SET_CALLBACK
-- 
GitLab