From 62b57271ebf955e4a08096853d82d0371b2d3589 Mon Sep 17 00:00:00 2001
From: Sam Yates <yates@cscs.ch>
Date: Fri, 25 Nov 2016 16:59:25 +0100
Subject: [PATCH] Correct pointer casting operations in `uninitialized` (#101)

Correct pointer casting operations in `uninitialized`: issue #100
---
 src/util/uninitialized.hpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/util/uninitialized.hpp b/src/util/uninitialized.hpp
index 8e3613cd..e8ea25c1 100644
--- a/src/util/uninitialized.hpp
+++ b/src/util/uninitialized.hpp
@@ -33,11 +33,11 @@ public:
     using reference = X&;
     using const_reference= const X&;
 
-    pointer ptr() { return reinterpret_cast<X*>(&data); }
-    const_pointer cptr() const { return reinterpret_cast<const X*>(&data); }
+    pointer ptr() { return static_cast<X*>(static_cast<void*>(&data)); }
+    const_pointer cptr() const { return static_cast<const X*>(static_cast<void*>(&data)); }
 
-    reference ref() { return *reinterpret_cast<X*>(&data); }
-    const_reference cref() const { return *reinterpret_cast<const X*>(&data); }
+    reference ref() { return *ptr(); }
+    const_reference cref() const { return *cptr(); }
 
     // Copy construct the value.
     template <
-- 
GitLab