diff --git a/Source/RWTHVRCluster/Public/Events/DisplayClusterEventParameterHelper.h b/Source/RWTHVRCluster/Public/Events/DisplayClusterEventParameterHelper.h
index ef6d9891d62cd305027349d9ff5787adf79fe5c3..f981eca5d8030a3bc492f9260dd75ca7981b9e83 100644
--- a/Source/RWTHVRCluster/Public/Events/DisplayClusterEventParameterHelper.h
+++ b/Source/RWTHVRCluster/Public/Events/DisplayClusterEventParameterHelper.h
@@ -2,12 +2,13 @@
 
 #include "Serialization/MemoryReader.h"
 #include "Serialization/MemoryWriter.h"
+#include "type_traits"
 
 template <typename ParameterType, typename... RemainingParameterTypes>
 inline void SerializeParameters(FMemoryWriter* MemoryWriter, ParameterType&& Parameter,
                                 RemainingParameterTypes&&... RemainingParameters)
 {
-	using NonConstType = typename TRemoveCV<typename TRemoveReference<ParameterType>::Type>::Type;
+	using NonConstType = typename std::remove_cv_t<typename TRemoveReference<ParameterType>::Type>;
 	// const_cast because the same operator (<<) is used for reading and writing
 	(*MemoryWriter) << const_cast<NonConstType&>(Parameter);
 	SerializeParameters(MemoryWriter, Forward<RemainingParameterTypes>(RemainingParameters)...);
@@ -44,7 +45,7 @@ inline RetType CallDelegateWithParameterMap(
 {
 	// Create a tuple that holds all arguments. This assumes that all argument types are default constructible. However, all
 	// types that overload the FArchive "<<" operator probably are.
-	TTuple<typename TRemoveCV<typename TRemoveReference<ArgTypes>::Type>::Type...> ArgumentTuple;
+	TTuple<typename std::remove_cv_t<typename TRemoveReference<ArgTypes>::Type>::Type...> ArgumentTuple;
 
 	// This call will parse the string map and fill all values in the tuple appropriately.
 	FillArgumentTuple<0>(&ArgumentTuple, Parameters);
diff --git a/Source/RWTHVRCluster/Public/Events/DisplayClusterEventWrapper.h b/Source/RWTHVRCluster/Public/Events/DisplayClusterEventWrapper.h
index 8810c2a8df2cdb94fc6c76004a1e7fb55e0e8862..a7805548aa6cbcb25e9e2b3f995c2a76d45c340e 100644
--- a/Source/RWTHVRCluster/Public/Events/DisplayClusterEventWrapper.h
+++ b/Source/RWTHVRCluster/Public/Events/DisplayClusterEventWrapper.h
@@ -69,7 +69,7 @@ public:
 					// Create a tuple that holds all arguments. This assumes that all
 					// argument types are default constructible. However, all
 					// types that overload the FArchive "<<" operator probably are.
-					TTuple<typename TRemoveCV<typename TRemoveReference<ArgTypes>::Type>::Type...> ArgumentTuple;
+					TTuple<typename TRemoveCV<typename TRemoveReference<ArgTypes>::Type>...> ArgumentTuple;
 
 					// This call will deserialze the values and fill all values in the tuple appropriately.
 					FillArgumentTuple<0>(&MemoryReader, &ArgumentTuple);