Prechádzať zdrojové kódy

AK: Use IsSame<FlatPtr, T> instead of __LP64__ to guess FlatPtr's type

Instead of playing the guessing game, simply use whatever type FlatPtr
itself resolves to.
Ali Mohammad Pur 1 rok pred
rodič
commit
0e61d039c9
1 zmenil súbory, kde vykonal 11 pridanie a 5 odobranie
  1. 11 5
      AK/JsonValue.h

+ 11 - 5
AK/JsonValue.h

@@ -104,11 +104,17 @@ public:
 
     Optional<FlatPtr> get_addr() const
     {
-#ifdef __LP64__
-        return get_u64();
-#else
-        return get_u32();
-#endif
+        // Note: This makes the lambda dependent on the template parameter, which is necessary
+        //       for the `if constexpr` to not evaluate both branches.
+        auto fn = [&]<typename T>() -> Optional<T> {
+            if constexpr (IsSame<T, u64>) {
+                return get_u64();
+            } else {
+                return get_u32();
+            }
+        };
+
+        return fn.operator()<FlatPtr>();
     }
 
     Optional<bool> get_bool() const