diff --git a/dune/common/typetraits.hh b/dune/common/typetraits.hh
index 885bbd86fc3f87d2959c4325433f654ad953d082..733eb3bbd522772776acc7e15b32c4079cf15825 100644
--- a/dune/common/typetraits.hh
+++ b/dune/common/typetraits.hh
@@ -406,13 +406,13 @@ namespace Dune
   };
 
   template <typename T>
-  struct has_nan {
-    bool static const value = std::is_floating_point<T>::value;
+  struct has_nan
+      : public std::integral_constant<bool, std::is_floating_point<T>::value> {
   };
 
   template <typename T>
-  struct has_nan<std::complex<T>> {
-    bool static const value = std::is_floating_point<T>::value;
+  struct has_nan<std::complex<T>>
+      : public std::integral_constant<bool, std::is_floating_point<T>::value> {
   };
 
 #if defined(DOXYGEN) or HAVE_IS_INDEXABLE_SUPPORT