diff --git a/src/util/uninitialized.hpp b/src/util/uninitialized.hpp index 8e3613cd6b342b40c7f2cd76edfd4e7acec5c582..e8ea25c1c09c979e9b4bbf835bb822c3a15673fb 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 <