diff --git a/src/ArduinoJson/Numbers/FloatTraits.hpp b/src/ArduinoJson/Numbers/FloatTraits.hpp
index 5a932f79..4d5782b7 100644
--- a/src/ArduinoJson/Numbers/FloatTraits.hpp
+++ b/src/ArduinoJson/Numbers/FloatTraits.hpp
@@ -117,19 +117,19 @@ struct FloatTraits {
     return forge(0x7FEFFFFF, 0xFFFFFFFF);
   }
 
-  template 
-  static typename enable_if::value &&
-                                is_signed::value && sizeof(TOut) == 8,
-                            T>::type  // TOut == int64_t
-  highest_for() {
+  template   // int64_t
+  static T highest_for(
+      typename enable_if::value && is_signed::value &&
+                             sizeof(TOut) == 8,
+                         signed>::type* = 0) {
     return forge(0x43DFFFFF, 0xFFFFFFFF);  //  9.2233720368547748e+18
   }
 
-  template 
-  static typename enable_if::value &&
-                                is_unsigned::value && sizeof(TOut) == 8,
-                            T>::type  // TOut == uint64_t
-  highest_for() {
+  template   // uint64_t
+  static T highest_for(
+      typename enable_if::value && is_unsigned::value &&
+                             sizeof(TOut) == 8,
+                         unsigned>::type* = 0) {
     return forge(0x43EFFFFF, 0xFFFFFFFF);  //  1.8446744073709549568e+19
   }
 
@@ -229,35 +229,35 @@ struct FloatTraits {
     return forge(0x7f7fffff);
   }
 
-  template 
-  static typename enable_if::value &&
-                                is_signed::value && sizeof(TOut) == 4,
-                            T>::type  // TOut == int32_t
-  highest_for() {
+  template   // int32_t
+  static T highest_for(
+      typename enable_if::value && is_signed::value &&
+                             sizeof(TOut) == 4,
+                         signed>::type* = 0) {
     return forge(0x4EFFFFFF);  // 2.14748352E9
   }
 
-  template 
-  static typename enable_if::value &&
-                                is_unsigned::value && sizeof(TOut) == 4,
-                            T>::type  // TOut == uint32_t
-  highest_for() {
+  template   // uint32_t
+  static T highest_for(
+      typename enable_if::value && is_unsigned::value &&
+                             sizeof(TOut) == 4,
+                         unsigned>::type* = 0) {
     return forge(0x4F7FFFFF);  // 4.29496704E9
   }
 
-  template 
-  static typename enable_if::value &&
-                                is_signed::value && sizeof(TOut) == 8,
-                            T>::type  // TOut == int64_t
-  highest_for() {
+  template   // int64_t
+  static T highest_for(
+      typename enable_if::value && is_signed::value &&
+                             sizeof(TOut) == 8,
+                         signed>::type* = 0) {
     return forge(0x5EFFFFFF);  // 9.22337148709896192E18
   }
 
-  template 
-  static typename enable_if::value &&
-                                is_unsigned::value && sizeof(TOut) == 8,
-                            T>::type  // TOut == uint64_t
-  highest_for() {
+  template   // uint64_t
+  static T highest_for(
+      typename enable_if::value && is_unsigned::value &&
+                             sizeof(TOut) == 8,
+                         unsigned>::type* = 0) {
     return forge(0x5F7FFFFF);  // 1.844674297419792384E19
   }