diff --git a/src/c_wrapper/device.cpp b/src/c_wrapper/device.cpp
index 49e27e2cddc58106ec25ac65a5381de00426b26e..c395b62bdf3865725ad698288db75e0ddca63896 100644
--- a/src/c_wrapper/device.cpp
+++ b/src/c_wrapper/device.cpp
@@ -10,6 +10,15 @@ template void print_clobj<device>(std::ostream&, const device*);
 template void print_buf<cl_device_id>(std::ostream&, const cl_device_id*,
                                       size_t, ArgType, bool, bool);
 
+void
+device::get_version(cl_device_id dev, int *major, int *minor)
+{
+    cl_platform_id plat;
+    pyopencl_call_guarded(clGetDeviceInfo, dev, CL_DEVICE_PLATFORM,
+                          size_arg(plat), nullptr);
+    platform::get_version(plat, major, minor);
+}
+
 device::~device()
 {
     if (false) {
diff --git a/src/c_wrapper/device.h b/src/c_wrapper/device.h
index 274e972d9e2f3dba031e3fcb89e7cd240daf7ae7..970047d1c0ad58e9f3ff2a814f4b4323e23556cf 100644
--- a/src/c_wrapper/device.h
+++ b/src/c_wrapper/device.h
@@ -26,6 +26,7 @@ private:
     reference_type_t m_ref_type;
 
 public:
+    static void get_version(cl_device_id dev, int *major, int *minor);
     device(cl_device_id did, bool retain=false,
            reference_type_t ref_type=REF_NOT_OWNABLE)
         : clobj(did), m_ref_type(ref_type)
diff --git a/src/c_wrapper/platform.cpp b/src/c_wrapper/platform.cpp
index 20e36bcfd6995a4c825861437140ea39ca7d8d42..28b123c838276063d134decf32017a6b2e228875 100644
--- a/src/c_wrapper/platform.cpp
+++ b/src/c_wrapper/platform.cpp
@@ -34,7 +34,7 @@ platform::get_info(cl_uint param_name) const
 static const std::regex ver_regex("^OpenCL ([0-9]+)\\.([0-9]+).*");
 
 void
-get_platform_version(cl_platform_id plat, int *major, int *minor)
+platform::get_version(cl_platform_id plat, int *major, int *minor)
 {
     char s_buff[128];
     size_t size;
diff --git a/src/c_wrapper/platform.h b/src/c_wrapper/platform.h
index 1c47123af51ad25cc3011053c0b34ac79d4d8f3c..f399392a74489ca6a79d1eb45eb82a9358dbc3b0 100644
--- a/src/c_wrapper/platform.h
+++ b/src/c_wrapper/platform.h
@@ -15,6 +15,7 @@ extern template void print_buf<cl_platform_id>(
 
 class platform : public clobj<cl_platform_id> {
 public:
+    static void get_version(cl_platform_id plat, int *major, int *minor);
     using clobj::clobj;
     PYOPENCL_DEF_CL_CLASS(PLATFORM);
 
@@ -23,8 +24,6 @@ public:
 
 extern template void print_clobj<platform>(std::ostream&, const platform*);
 
-void get_platform_version(cl_platform_id plat, int *major, int *minor);
-
 // }}}
 
 }