diff --git a/dune/common/densevectorspan.hh b/dune/common/densevectorspan.hh
index f4ad3df5bce1669fb5ec9bba528f2176ab540768..5f8a0386c759b5a2f752b264fd4e0f3de3159036 100644
--- a/dune/common/densevectorspan.hh
+++ b/dune/common/densevectorspan.hh
@@ -70,6 +70,10 @@ template <class K>
 DenseVectorSpan (K*, std::size_t)
   -> DenseVectorSpan<K>;
 
+template <class K, std::size_t N>
+DenseVectorSpan (K (&)[N])
+  -> DenseVectorSpan<K,N>;
+
 template <class S, std::enable_if_t<Dune::IsNumber<S>::value,int> = 0>
 DenseVectorSpan (S&)
   -> DenseVectorSpan<S,1>;
diff --git a/dune/common/test/densevectorspantest.cc b/dune/common/test/densevectorspantest.cc
index 3014eb2423989531ffac249cf9c56749b712f2c7..56a862c8955351c3e2bd4f35a46b219b4586c5b2 100644
--- a/dune/common/test/densevectorspantest.cc
+++ b/dune/common/test/densevectorspantest.cc
@@ -24,13 +24,26 @@ int main()
   std::vector<double>  x(3);
   std::array<double,3> y{1.0,2.0,3.0};
 
-  auto x_span = Dune::DenseVectorSpan(x);
-  auto y_span = Dune::DenseVectorSpan(y);
+  {
+    auto x_span = Dune::DenseVectorSpan(x);
+    auto y_span = Dune::DenseVectorSpan(y);
+
+    matrix.mv(y_span,x_span);
+    test.check(x[0] == -3.0);
+    test.check(x[1] ==  2.0);
+    test.check(x[2] ==  9.0);
+  }
 
-  matrix.mv(y_span,x_span);
-  test.check(x[0] == -3.0);
-  test.check(x[1] ==  2.0);
-  test.check(x[2] ==  9.0);
+  {
+    [[maybe_unused]] auto x_span1 = Dune::DenseVectorSpan(x.data(), x.size());
+    [[maybe_unused]] auto x_span2 = Dune::DenseVectorSpan<double,3>(x.data());
+  }
+
+  {
+    double data[3]{1.0,2.0,3.0};
+    [[maybe_unused]] auto x_span1 = Dune::DenseVectorSpan(data, 3);
+    [[maybe_unused]] auto x_span2 = Dune::DenseVectorSpan(data);
+  }
 
   return test.exit();
 }