[libc][NFC] moving template specialization outside class declaration
authorGuillaume Chatelet <gchatelet@google.com>
Mon, 7 Feb 2022 15:18:11 +0000 (15:18 +0000)
committerGuillaume Chatelet <gchatelet@google.com>
Tue, 8 Feb 2022 10:35:44 +0000 (10:35 +0000)
This is necessary to get llvm-libc compile with GCC.
This patch is extracted from D119002.

Differential Revision: https://reviews.llvm.org/D119142

libc/utils/MPFRWrapper/MPFRUtils.cpp

index 3c57211..502a15f 100644 (file)
@@ -392,16 +392,6 @@ public:
   // These functions are useful for debugging.
   template <typename T> T as() const;
 
-  template <> float as<float>() const {
-    return mpfr_get_flt(value, mpfr_rounding);
-  }
-  template <> double as<double>() const {
-    return mpfr_get_d(value, mpfr_rounding);
-  }
-  template <> long double as<long double>() const {
-    return mpfr_get_ld(value, mpfr_rounding);
-  }
-
   void dump(const char *msg) const { mpfr_printf("%s%.128Rf\n", msg, value); }
 
   // Return the ULP (units-in-the-last-place) difference between the
@@ -488,6 +478,18 @@ public:
   }
 };
 
+template <> float MPFRNumber::as<float>() const {
+  return mpfr_get_flt(value, mpfr_rounding);
+}
+
+template <> double MPFRNumber::as<double>() const {
+  return mpfr_get_d(value, mpfr_rounding);
+}
+
+template <> long double MPFRNumber::as<long double>() const {
+  return mpfr_get_ld(value, mpfr_rounding);
+}
+
 namespace internal {
 
 template <typename InputType>