From 3717983a82de547006c8fe6e0298ff9b4cd4b389 Mon Sep 17 00:00:00 2001
From: Simon Praetorius <simon.praetorius@tu-dresden.de>
Date: Thu, 12 Dec 2024 21:45:35 +0100
Subject: [PATCH] Extend the DenseVectorSpan test and deduction guides

---
 dune/common/densevectorspan.hh          |  4 ++++
 dune/common/test/densevectorspantest.cc | 25 +++++++++++++++++++------
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/dune/common/densevectorspan.hh b/dune/common/densevectorspan.hh
index f4ad3df5b..5f8a0386c 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 3014eb242..56a862c89 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();
 }
-- 
GitLab