Revert "Test new solution for HB_PARTIALIZE"
authorBehdad Esfahbod <behdad@behdad.org>
Mon, 10 Jun 2019 19:46:54 +0000 (12:46 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 10 Jun 2019 19:46:54 +0000 (12:46 -0700)
This reverts commit a0c4900799c26e4ff34180842a5ff21048fe31a0.

src/hb-algs.hh

index 401668a..7b727f2 100644 (file)
@@ -186,11 +186,27 @@ auto hb_partial (Appl&& a, V&& v) HB_AUTO_RETURN
  * that "this+0" is illegal in the trailing decltype position since at
  * that point this points to incomplete type!  But seems to do the trick.
  */
+#ifdef _MSC_VER
+/* https://github.com/harfbuzz/harfbuzz/issues/1730 */ \
+#define HB_PARTIALIZE(Pos) \
+  template <typename _T> \
+  decltype(auto) operator () (_T&& _v) const \
+  { return hb_partial<Pos> (this, hb_forward<_T> (_v)); } \
+  static_assert (true, "")
+#elif !defined(__clang__) && defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ <= 8)
+/* https://github.com/harfbuzz/harfbuzz/issues/1724 */
 #define HB_PARTIALIZE(Pos) \
   template <typename _T> \
   auto operator () (_T&& _v) const HB_AUTO_RETURN \
-  (hb_partial<Pos> (+this, hb_forward<_T> (_v))) \
+  (hb_partial<Pos> (this+0, hb_forward<_T> (_v))) \
   static_assert (true, "")
+#else
+#define HB_PARTIALIZE(Pos) \
+  template <typename _T> \
+  auto operator () (_T&& _v) const HB_AUTO_RETURN \
+  (hb_partial<Pos> (this, hb_forward<_T> (_v))) \
+  static_assert (true, "")
+#endif
 
 
 struct