diff --git a/dune/fufem/utilities/adolcnamespaceinjections.hh b/dune/fufem/utilities/adolcnamespaceinjections.hh
index 6b1437e64123ce199f3fe153a4cdcecb7b07a59b..1762ec831da662fd30eaf73683fd56fee90ee307 100644
--- a/dune/fufem/utilities/adolcnamespaceinjections.hh
+++ b/dune/fufem/utilities/adolcnamespaceinjections.hh
@@ -2,8 +2,10 @@
 #define DUNE_FUFEM_UTILITIES_ADOLC_NAMESPACE_INJECTIONS_HH
 
 #include <limits>
+#include <type_traits>
 
 #include <dune/common/promotiontraits.hh>
+#include <dune/common/typetraits.hh>
 
 #ifdef HAVE_ADOLC
 #include <adolc/adouble.h>
@@ -120,15 +122,20 @@ namespace std
    };
 }
 
-/* Specializations of the PromotionTraits class from dune-common for the adouble type.
- * This is needed, e.g., to be able to use the FieldVector implementation of dot products
- * between a FieldVector<double> and a FieldVector<adouble>.  The standard C++ return type
- * deduction mechanism doesn't help here, because the product of a double and an adouble
- * is actually a proxy class called 'adub', which is not to be used outside of the ADOL-C
- * library.
- */
 namespace Dune
 {
+  template<>
+  struct IsNumber<adouble>
+    : std::true_type
+  {};
+
+  /* Specializations of the PromotionTraits class from dune-common for the adouble type.
+   * This is needed, e.g., to be able to use the FieldVector implementation of dot products
+   * between a FieldVector<double> and a FieldVector<adouble>.  The standard C++ return type
+   * deduction mechanism doesn't help here, because the product of a double and an adouble
+   * is actually a proxy class called 'adub', which is not to be used outside of the ADOL-C
+   * library.
+   */
   template <>
   struct PromotionTraits<double,adouble>
   {