From 03a68165d8296ed5cc0eb2434500381419409e79 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 7 May 2019 00:03:35 -0700 Subject: [PATCH] [meta] Add hb_reference_wrapper<> Functionality kinda superset of std:: counterpart. --- src/hb-meta.hh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/hb-meta.hh b/src/hb-meta.hh index 52f6866..fc64e97 100644 --- a/src/hb-meta.hh +++ b/src/hb-meta.hh @@ -138,6 +138,27 @@ struct } HB_FUNCOBJ (hb_ref); +template +struct hb_reference_wrapper +{ + hb_reference_wrapper (T v) : v (v) {} + hb_reference_wrapper (const hb_reference_wrapper& o) : v (o.v) {} + bool operator == (const hb_reference_wrapper& o) const { return v == o.v; } + bool operator != (const hb_reference_wrapper& o) const { return v != o.v; } + T get () const { return v; } + T v; +}; +template +struct hb_reference_wrapper +{ + hb_reference_wrapper (T& v) : v (&v) {} + hb_reference_wrapper (const hb_reference_wrapper& o) : v (o.v) {} + bool operator == (const hb_reference_wrapper& o) const { return v == o.v; } + bool operator != (const hb_reference_wrapper& o) const { return v != o.v; } + T* get () const { return v; } + T* v; +}; + template struct hb_enable_if {}; template struct hb_enable_if { typedef T type; }; -- 2.7.4