Fix: remove type constness in URCU_FORCE_CAST's C++ version
[urcu.git] / include / urcu / compiler.h
index 34eb564bb77795e9e77d21983240c3327b3401d1..2f32b38d6fb1850291ebd500f0a2fdca53f5c428 100644 (file)
 
 #include <stddef.h>    /* for offsetof */
 
 
 #include <stddef.h>    /* for offsetof */
 
+#if defined __cplusplus
+# include <type_traits>        /* for std::remove_cv */
+#endif
+
 #define caa_likely(x)  __builtin_expect(!!(x), 1)
 #define caa_unlikely(x)        __builtin_expect(!!(x), 0)
 
 #define caa_likely(x)  __builtin_expect(!!(x), 1)
 #define caa_unlikely(x)        __builtin_expect(!!(x), 0)
 
@@ -82,7 +86,7 @@
 #define __rcu
 
 #ifdef __cplusplus
 #define __rcu
 
 #ifdef __cplusplus
-#define URCU_FORCE_CAST(type, arg)     (reinterpret_cast<type>(arg))
+#define URCU_FORCE_CAST(_type, arg)    (reinterpret_cast<std::remove_cv<_type>::type>(arg))
 #else
 #define URCU_FORCE_CAST(type, arg)     ((type) (arg))
 #endif
 #else
 #define URCU_FORCE_CAST(type, arg)     ((type) (arg))
 #endif
This page took 0.023233 seconds and 4 git commands to generate.