diff --git a/dune/matrix-vector/traits/utilities.hh b/dune/matrix-vector/traits/utilities.hh
index 10b4541946435c1521d736cdc65303c4a5eef6b5..fd489ca03838514f5d1143bdf17253c3e3ee8b5c 100644
--- a/dune/matrix-vector/traits/utilities.hh
+++ b/dune/matrix-vector/traits/utilities.hh
@@ -17,22 +17,22 @@ namespace MatrixVector {
 // convenience compile-time functions to classify types
 template <class T>
 constexpr auto isNumber() {
-  return Std::bool_constant<IsNumber<T>::value>();
+  return Std::bool_constant<IsNumber<std::decay_t<T>>::value>();
 }
 
 template <class T>
 constexpr auto isScalar() {
-  return Std::bool_constant<Traits::ScalarTraits<T>::isScalar>();
+  return Std::bool_constant<Traits::ScalarTraits<std::decay_t<T>>::isScalar>();
 }
 
 template <class T>
 constexpr auto isVector() {
-  return Std::bool_constant<Traits::VectorTraits<T>::isVector>();
+  return Std::bool_constant<Traits::VectorTraits<std::decay_t<T>>::isVector>();
 }
 
 template <class T>
 constexpr auto isMatrix() {
-  return Std::bool_constant<Traits::MatrixTraits<T>::isMatrix>();
+  return Std::bool_constant<Traits::MatrixTraits<std::decay_t<T>>::isMatrix>();
 }
 
 template <class T>