diff --git a/src/amdis/common/TypeTraits.hpp b/src/amdis/common/TypeTraits.hpp
index 20558d35bf915e613d0899d8030ac4ed3f6b0b4a..b79512786b1080456d4f859c9c89721d563150b1 100644
--- a/src/amdis/common/TypeTraits.hpp
+++ b/src/amdis/common/TypeTraits.hpp
@@ -12,6 +12,24 @@
 
 namespace AMDiS
 {
+  /// \brief Remove cv and ref qualifiers of type T.
+  /**
+   * If the type T is a reference type, provides the member typedef type which
+   * is the type referred to by T with its topmost cv-qualifiers removed.
+   * Otherwise type is T with its topmost cv-qualifiers removed.
+   *
+   * Note: This is a backport of c++20 std::remove_cvref
+   **/
+  template< class T >
+  struct remove_cvref
+  {
+    using type = std::remove_cv_t<std::remove_reference_t<T>>;
+  };
+
+  /// Helper alias template for \ref remove_cvref
+  template< class T >
+  using remove_cvref_t = typename remove_cvref<T>::type;
+
   namespace Impl
   {
     template <class T>