From eb5be1276a2cc4c5d91dcb4e1677b11495cd92ef Mon Sep 17 00:00:00 2001
From: Simon Praetorius <simon.praetorius@tu-dresden.de>
Date: Sat, 18 Jan 2020 16:06:00 +0100
Subject: [PATCH] moved sizeImpl into local static member function

---
 dune/vtk/vtkfunction.hh                 | 34 ++++++++++++-------------
 src/test/mixed_element_test.cc          |  3 +++
 src/test/parallel_reader_writer_test.cc |  3 +++
 src/test/reader_writer_test.cc          |  4 +++
 4 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/dune/vtk/vtkfunction.hh b/dune/vtk/vtkfunction.hh
index d8ce4f9..8fa41f7 100644
--- a/dune/vtk/vtkfunction.hh
+++ b/dune/vtk/vtkfunction.hh
@@ -16,24 +16,6 @@ namespace Dune
   template <class T, int N, int M>
   class FieldMatrix;
 
-  namespace Impl
-  {
-    template <class T, class = void>
-    struct SizeImpl
-        : std::integral_constant<int, 1> {};
-
-    template <class T, int N>
-    struct SizeImpl<FieldVector<T,N>>
-        : std::integral_constant<int, N> {};
-
-    template <class T, int N, int M>
-    struct SizeImpl<FieldMatrix<T,N,M>>
-        : std::integral_constant<int, N*M> {};
-  }
-
-  template <class T>
-  constexpr int sizeOf () { return Impl::SizeImpl<std::decay_t<T>>::value; }
-
 
   /// Wrapper class for functions allowing local evaluations.
   template <class GridView>
@@ -47,6 +29,22 @@ namespace Dune
     template <class F>
     using Range = std::decay_t<decltype(std::declval<F>()(std::declval<Domain>()))>;
 
+  private:
+
+    template <class T, int N>
+    static auto sizeOfImpl (FieldVector<T,N> const&)
+      -> std::integral_constant<int, N> { return {}; }
+
+    template <class T, int N, int M>
+    static auto sizeOfImpl (FieldMatrix<T,N,M> const&)
+      -> std::integral_constant<int, N*M> { return {}; };
+
+    static auto sizeOfImpl (...)
+      -> std::integral_constant<int, 1> { return {}; }
+
+    template <class T>
+    static constexpr int sizeOf () { return decltype(sizeOfImpl(std::declval<T>()))::value; }
+
   public:
     /// Constructor VtkFunction from legacy VTKFunction
     /**
diff --git a/src/test/mixed_element_test.cc b/src/test/mixed_element_test.cc
index 589a105..0a5b446 100644
--- a/src/test/mixed_element_test.cc
+++ b/src/test/mixed_element_test.cc
@@ -13,7 +13,10 @@
 #include <dune/common/filledarray.hh>
 #include <dune/common/test/testsuite.hh>
 
+#if HAVE_UG
 #include <dune/grid/uggrid.hh>
+#endif
+
 #include <dune/grid/yaspgrid.hh>
 #include <dune/grid/utility/structuredgridfactory.hh>
 
diff --git a/src/test/parallel_reader_writer_test.cc b/src/test/parallel_reader_writer_test.cc
index a15261b..72dd52b 100644
--- a/src/test/parallel_reader_writer_test.cc
+++ b/src/test/parallel_reader_writer_test.cc
@@ -14,7 +14,10 @@
 #include <dune/common/std/type_traits.hh>
 #include <dune/common/test/testsuite.hh>
 
+#if HAVE_UG
 #include <dune/grid/uggrid.hh>
+#endif
+
 #include <dune/grid/yaspgrid.hh>
 #include <dune/grid/utility/structuredgridfactory.hh>
 
diff --git a/src/test/reader_writer_test.cc b/src/test/reader_writer_test.cc
index f0051fc..c7edefb 100644
--- a/src/test/reader_writer_test.cc
+++ b/src/test/reader_writer_test.cc
@@ -7,13 +7,17 @@
 
 #include <cstring>
 #include <iostream>
+#include <set>
 #include <vector>
 
 #include <dune/common/parallel/mpihelper.hh> // An initializer of MPI
 #include <dune/common/filledarray.hh>
 #include <dune/common/test/testsuite.hh>
 
+#if HAVE_UG
 #include <dune/grid/uggrid.hh>
+#endif
+
 #include <dune/grid/yaspgrid.hh>
 #include <dune/grid/utility/structuredgridfactory.hh>
 
-- 
GitLab