use a more specific template type parameter for getInfo functions
diff --git a/include/CL/cl.hpp b/include/CL/cl.hpp
index 93648b6..79d078b 100644
--- a/include/CL/cl.hpp
+++ b/include/CL/cl.hpp
@@ -2116,7 +2116,7 @@
     }
 
     //! \brief Wrapper for clGetDeviceInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_device_info name> typename
     detail::param_traits<detail::cl_device_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -2232,7 +2232,7 @@
     }
 
     //! \brief Wrapper for clGetPlatformInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_platform_info name> typename
     detail::param_traits<detail::cl_platform_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -2758,7 +2758,7 @@
     }
 
     //! \brief Wrapper for clGetContextInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_context_info name> typename
     detail::param_traits<detail::cl_context_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -2894,7 +2894,7 @@
     }
 
     //! \brief Wrapper for clGetEventInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_event_info name> typename
     detail::param_traits<detail::cl_event_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -2917,7 +2917,7 @@
     }
 
     //! \brief Wrapper for clGetEventProfilingInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_profiling_info name> typename
     detail::param_traits<detail::cl_profiling_info, name>::param_type
     getProfilingInfo(cl_int* err = NULL) const
     {
@@ -3103,7 +3103,7 @@
     }
 
     //! \brief Wrapper for clGetMemObjectInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_mem_info name> typename
     detail::param_traits<detail::cl_mem_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -3635,7 +3635,7 @@
     }
     
     //! \brief Wrapper for clGetImageInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_image_info name> typename
     detail::param_traits<detail::cl_image_info, name>::param_type
     getImageInfo(cl_int* err = NULL) const
     {
@@ -4739,7 +4739,7 @@
     }
 
     //! \brief Wrapper for clGetSamplerInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_sampler_info name> typename
     detail::param_traits<detail::cl_sampler_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -4931,7 +4931,7 @@
             __GET_KERNEL_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_kernel_info name> typename
     detail::param_traits<detail::cl_kernel_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -4953,7 +4953,7 @@
             __GET_KERNEL_ARG_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_kernel_arg_info name> typename
     detail::param_traits<detail::cl_kernel_arg_info, name>::param_type
     getArgInfo(cl_uint argIndex, cl_int* err = NULL) const
     {
@@ -4977,7 +4977,7 @@
                 __GET_KERNEL_WORK_GROUP_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_kernel_work_group_info name> typename
     detail::param_traits<detail::cl_kernel_work_group_info, name>::param_type
         getWorkGroupInfo(const Device& device, cl_int* err = NULL) const
     {
@@ -5327,7 +5327,7 @@
             __GET_PROGRAM_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_program_info name> typename
     detail::param_traits<detail::cl_program_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -5350,7 +5350,7 @@
                 __GET_PROGRAM_BUILD_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_program_build_info name> typename
     detail::param_traits<detail::cl_program_build_info, name>::param_type
     getBuildInfo(const Device& device, cl_int* err = NULL) const
     {
@@ -5695,7 +5695,7 @@
                 __GET_COMMAND_QUEUE_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_command_queue_info name> typename
     detail::param_traits<detail::cl_command_queue_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
diff --git a/include/CL/cl2.hpp b/include/CL/cl2.hpp
index f1b55b4..1f06782 100644
--- a/include/CL/cl2.hpp
+++ b/include/CL/cl2.hpp
@@ -2177,7 +2177,7 @@
     }
 
     //! \brief Wrapper for clGetDeviceInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_device_info name> typename
     detail::param_traits<detail::cl_device_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -2463,7 +2463,7 @@
     }
 
     //! \brief Wrapper for clGetPlatformInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_platform_info name> typename
     detail::param_traits<detail::cl_platform_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -3020,7 +3020,7 @@
     }
 
     //! \brief Wrapper for clGetContextInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_context_info name> typename
     detail::param_traits<detail::cl_context_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -3162,7 +3162,7 @@
     }
 
     //! \brief Wrapper for clGetEventInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_event_info name> typename
     detail::param_traits<detail::cl_event_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -3185,7 +3185,7 @@
     }
 
     //! \brief Wrapper for clGetEventProfilingInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_profiling_info name> typename
     detail::param_traits<detail::cl_profiling_info, name>::param_type
     getProfilingInfo(cl_int* err = NULL) const
     {
@@ -3377,7 +3377,7 @@
     }
 
     //! \brief Wrapper for clGetMemObjectInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_mem_info name> typename
     detail::param_traits<detail::cl_mem_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -4375,7 +4375,7 @@
     }
     
     //! \brief Wrapper for clGetImageInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_image_info name> typename
     detail::param_traits<detail::cl_image_info, name>::param_type
     getImageInfo(cl_int* err = NULL) const
     {
@@ -5524,7 +5524,7 @@
     }
 
     //! \brief Wrapper for clGetMemObjectInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_pipe_info name> typename
         detail::param_traits<detail::cl_pipe_info, name>::param_type
         getInfo(cl_int* err = NULL) const
     {
@@ -5657,7 +5657,7 @@
     }
 
     //! \brief Wrapper for clGetSamplerInfo() that returns by value.
-    template <cl_int name> typename
+    template <cl_sampler_info name> typename
     detail::param_traits<detail::cl_sampler_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -5880,7 +5880,7 @@
             __GET_KERNEL_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_kernel_info name> typename
     detail::param_traits<detail::cl_kernel_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -5902,7 +5902,7 @@
             __GET_KERNEL_ARG_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_kernel_arg_info name> typename
     detail::param_traits<detail::cl_kernel_arg_info, name>::param_type
     getArgInfo(cl_uint argIndex, cl_int* err = NULL) const
     {
@@ -5926,7 +5926,7 @@
                 __GET_KERNEL_WORK_GROUP_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_kernel_work_group_info name> typename
     detail::param_traits<detail::cl_kernel_work_group_info, name>::param_type
         getWorkGroupInfo(const Device& device, cl_int* err = NULL) const
     {
@@ -5961,7 +5961,7 @@
 #endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 210
     }
 
-    template <cl_int name>
+    template <cl_kernel_sub_group_info name>
         size_type getSubGroupInfo(const cl::Device &dev, const cl::NDRange &range, cl_int* err = NULL) const
     {
         size_type param;
@@ -6641,7 +6641,7 @@
             __GET_PROGRAM_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_program_info name> typename
     detail::param_traits<detail::cl_program_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -6664,7 +6664,7 @@
                 __GET_PROGRAM_BUILD_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_program_build_info name> typename
     detail::param_traits<detail::cl_program_build_info, name>::param_type
     getBuildInfo(const Device& device, cl_int* err = NULL) const
     {
@@ -6682,7 +6682,7 @@
      * info type and for all devices in the program.
      * On an error reading the info for any device, an empty vector of info will be returned.
      */
-    template <cl_int name>
+    template <cl_program_build_info name>
     vector<std::pair<cl::Device, typename detail::param_traits<detail::cl_program_build_info, name>::param_type>>
         getBuildInfo(cl_int *err = NULL) const
     {
@@ -7476,7 +7476,7 @@
                 __GET_COMMAND_QUEUE_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_command_queue_info name> typename
     detail::param_traits<detail::cl_command_queue_info, name>::param_type
     getInfo(cl_int* err = NULL) const
     {
@@ -8856,7 +8856,7 @@
             __GET_COMMAND_QUEUE_INFO_ERR);
     }
 
-    template <cl_int name> typename
+    template <cl_command_queue_info name> typename
         detail::param_traits<detail::cl_command_queue_info, name>::param_type
         getInfo(cl_int* err = NULL) const
     {
diff --git a/input_cl.hpp b/input_cl.hpp
index 0860959..fe1a683 100644
--- a/input_cl.hpp
+++ b/input_cl.hpp
@@ -2116,7 +2116,7 @@
     }

 

     //! \brief Wrapper for clGetDeviceInfo() that returns by value.

-    template <cl_int name> typename

+    template <cl_device_info name> typename

     detail::param_traits<detail::cl_device_info, name>::param_type

     getInfo(cl_int* err = NULL) const

     {

@@ -2232,7 +2232,7 @@
     }

 

     //! \brief Wrapper for clGetPlatformInfo() that returns by value.

-    template <cl_int name> typename

+    template <cl_platform_info name> typename

     detail::param_traits<detail::cl_platform_info, name>::param_type

     getInfo(cl_int* err = NULL) const

     {

@@ -2758,7 +2758,7 @@
     }

 

     //! \brief Wrapper for clGetContextInfo() that returns by value.

-    template <cl_int name> typename

+    template <cl_context_info name> typename

     detail::param_traits<detail::cl_context_info, name>::param_type

     getInfo(cl_int* err = NULL) const

     {

@@ -2894,7 +2894,7 @@
     }

 

     //! \brief Wrapper for clGetEventInfo() that returns by value.

-    template <cl_int name> typename

+    template <cl_event_info name> typename

     detail::param_traits<detail::cl_event_info, name>::param_type

     getInfo(cl_int* err = NULL) const

     {

@@ -2917,7 +2917,7 @@
     }

 

     //! \brief Wrapper for clGetEventProfilingInfo() that returns by value.

-    template <cl_int name> typename

+    template <cl_profiling_info name> typename

     detail::param_traits<detail::cl_profiling_info, name>::param_type

     getProfilingInfo(cl_int* err = NULL) const

     {

@@ -3103,7 +3103,7 @@
     }

 

     //! \brief Wrapper for clGetMemObjectInfo() that returns by value.

-    template <cl_int name> typename

+    template <cl_mem_info name> typename

     detail::param_traits<detail::cl_mem_info, name>::param_type

     getInfo(cl_int* err = NULL) const

     {

@@ -3635,7 +3635,7 @@
     }

     

     //! \brief Wrapper for clGetImageInfo() that returns by value.

-    template <cl_int name> typename

+    template <cl_image_info name> typename

     detail::param_traits<detail::cl_image_info, name>::param_type

     getImageInfo(cl_int* err = NULL) const

     {

@@ -4739,7 +4739,7 @@
     }

 

     //! \brief Wrapper for clGetSamplerInfo() that returns by value.

-    template <cl_int name> typename

+    template <cl_sampler_info name> typename

     detail::param_traits<detail::cl_sampler_info, name>::param_type

     getInfo(cl_int* err = NULL) const

     {

@@ -4931,7 +4931,7 @@
             __GET_KERNEL_INFO_ERR);

     }

 

-    template <cl_int name> typename

+    template <cl_kernel_info name> typename

     detail::param_traits<detail::cl_kernel_info, name>::param_type

     getInfo(cl_int* err = NULL) const

     {

@@ -4953,7 +4953,7 @@
             __GET_KERNEL_ARG_INFO_ERR);

     }

 

-    template <cl_int name> typename

+    template <cl_kernel_arg_info name> typename

     detail::param_traits<detail::cl_kernel_arg_info, name>::param_type

     getArgInfo(cl_uint argIndex, cl_int* err = NULL) const

     {

@@ -4977,7 +4977,7 @@
                 __GET_KERNEL_WORK_GROUP_INFO_ERR);

     }

 

-    template <cl_int name> typename

+    template <cl_kernel_work_group_info name> typename

     detail::param_traits<detail::cl_kernel_work_group_info, name>::param_type

         getWorkGroupInfo(const Device& device, cl_int* err = NULL) const

     {

@@ -5327,7 +5327,7 @@
             __GET_PROGRAM_INFO_ERR);

     }

 

-    template <cl_int name> typename

+    template <cl_program_info name> typename

     detail::param_traits<detail::cl_program_info, name>::param_type

     getInfo(cl_int* err = NULL) const

     {

@@ -5350,7 +5350,7 @@
                 __GET_PROGRAM_BUILD_INFO_ERR);

     }

 

-    template <cl_int name> typename

+    template <cl_program_build_info name> typename

     detail::param_traits<detail::cl_program_build_info, name>::param_type

     getBuildInfo(const Device& device, cl_int* err = NULL) const

     {

@@ -5695,7 +5695,7 @@
                 __GET_COMMAND_QUEUE_INFO_ERR);

     }

 

-    template <cl_int name> typename

+    template <cl_command_queue_info name> typename

     detail::param_traits<detail::cl_command_queue_info, name>::param_type

     getInfo(cl_int* err = NULL) const

     {