Fix gcc error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
--- a/contrib/Orochi/Orochi/Orochi.cpp
+++ b/contrib/Orochi/Orochi/Orochi.cpp
@@ -940,7 +940,9 @@ oroDevice oroSetRawDevice( oroApi api, oroDevice dev )
 {
 	ioroDevice d( dev );
 	d.setApi( api );
-	return *(oroDevice*)&d;
+    oroDevice result;
+    memcpy(&result, &d, sizeof(result));
+    return result;
 }
 
 //=================================
@@ -1005,7 +1007,13 @@ inline hipCtx_t* oroCtx2hip( oroCtx* a )
 #define __ORO_FUNC(cuname,hipname)  if( s_api == ORO_API_HIP ) return hip2oro(hipname);
 #endif
 
-#define __ORO_FORCE_CAST(type,var)     *((type*)(&var))
+#define __ORO_FORCE_CAST(type,var) \
+    ({ \
+        type __temp_result; \
+        static_assert(sizeof(type) == sizeof(var), "Types must be the same size for casting"); \
+        memcpy(&__temp_result, &(var), sizeof(type)); \
+        __temp_result; \
+    })
 
 
 
