From ad0f48e706f6eac9d0525fa936e5b684753f4bd4 Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Sun, 17 Jan 2016 06:41:51 +0100
Subject: [PATCH] Hide the adouble specializations behind #ifdefs

They only make sense if the 'adouble' type is known.
---
 dune/gfe/linearalgebra.hh | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/dune/gfe/linearalgebra.hh b/dune/gfe/linearalgebra.hh
index 12ef869d..ca4f1eb4 100644
--- a/dune/gfe/linearalgebra.hh
+++ b/dune/gfe/linearalgebra.hh
@@ -3,6 +3,7 @@
 
 #include <dune/common/fmatrix.hh>
 
+#if ADOLC_ADOUBLE_H
 template< int m, int n, int p >
 auto operator* ( const Dune::FieldMatrix< adouble, m, n > &A, const Dune::FieldMatrix< adouble, n, p > &B)
   -> Dune::FieldMatrix<adouble, m, p>
@@ -56,6 +57,7 @@ auto operator* ( const Dune::FieldMatrix< double, m, n > &A, const Dune::FieldMa
     }
     return ret;
 }
+#endif
 
 //! calculates ret = A + B
 template< class K, int m, int n>
@@ -72,11 +74,11 @@ Dune::FieldMatrix<K,m,n> operator+ ( const Dune::FieldMatrix<K, m, n> &A, const
 }
 
 //! calculates ret = A - B
-template <int m, int n>
-auto operator- ( const Dune::FieldMatrix< adouble, m, n > &A, const Dune::FieldMatrix< double, m, n > &B)
-  -> Dune::FieldMatrix<adouble, m, n>
+template <class T, int m, int n>
+auto operator- ( const Dune::FieldMatrix< T, m, n > &A, const Dune::FieldMatrix< T, m, n > &B)
+  -> Dune::FieldMatrix<T, m, n>
 {
-    Dune::FieldMatrix<adouble,m,n> result;
+    Dune::FieldMatrix<T,m,n> result;
     typedef typename decltype(result)::size_type size_type;
 
     for( size_type i = 0; i < m; ++i )
@@ -86,9 +88,10 @@ auto operator- ( const Dune::FieldMatrix< adouble, m, n > &A, const Dune::FieldM
     return result;
 }
 
+#if ADOLC_ADOUBLE_H
 //! calculates ret = A - B
 template <int m, int n>
-auto operator- ( const Dune::FieldMatrix< adouble, m, n > &A, const Dune::FieldMatrix< adouble, m, n > &B)
+auto operator- ( const Dune::FieldMatrix< adouble, m, n > &A, const Dune::FieldMatrix< double, m, n > &B)
   -> Dune::FieldMatrix<adouble, m, n>
 {
     Dune::FieldMatrix<adouble,m,n> result;
@@ -115,6 +118,7 @@ auto operator* ( const double& s, const Dune::FieldMatrix<adouble, m, n> &A)
 
     return ret;
 }
+#endif
 
 //! calculates ret = s*A
 template< int m, int n>
-- 
GitLab