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>