From 0110619c2077dbc22571714913e7b57ca7917b83 Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Thu, 5 Jun 2014 16:35:31 +0100 Subject: Use std::enable_if instead of a custom helper class. Change-Id: Iffa0f0350ccc4fce698b9a16aefd340e16654076 --- compiler/utils/array_ref.h | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) (limited to 'compiler/utils/array_ref.h') diff --git a/compiler/utils/array_ref.h b/compiler/utils/array_ref.h index 5a68874da8..2d70b7dd31 100644 --- a/compiler/utils/array_ref.h +++ b/compiler/utils/array_ref.h @@ -24,8 +24,6 @@ namespace art { -template struct ArrayRefHelper; - /** * @brief A container that references an array. * @@ -41,6 +39,9 @@ template struct ArrayRefHelper; */ template class ArrayRef { + private: + struct tag { }; + public: typedef T value_type; typedef T& reference; @@ -67,7 +68,7 @@ class ArrayRef { template constexpr ArrayRef(U (&array)[size], - typename ArrayRefHelper::value>::tag t = tag()) + typename std::enable_if::value, tag>::type t = tag()) : array_(array), size_(size) { } @@ -77,7 +78,7 @@ class ArrayRef { template constexpr ArrayRef(U* array, size_t size, - typename ArrayRefHelper::value>::tag t = tag()) + typename std::enable_if::value, tag>::type t = tag()) : array_(array), size_(size) { } @@ -87,7 +88,7 @@ class ArrayRef { template ArrayRef(const std::vector& v, - typename ArrayRefHelper::value>::tag t = tag()) + typename std::enable_if::value, tag>::tag t = tag()) : array_(v.data()), size_(v.size()) { } @@ -100,7 +101,7 @@ class ArrayRef { } template - typename ArrayRefHelper::value>::type& + typename std::enable_if::value, ArrayRef>::type& operator=(const ArrayRef& other) { return *this = ArrayRef(other); } @@ -162,22 +163,10 @@ class ArrayRef { const value_type* data() const { return array_; } private: - struct tag { }; - friend struct ArrayRefHelper; - T* array_; size_t size_; }; -template struct ArrayRefHelper { - typedef typename ArrayRef::tag tag; - typedef ArrayRef type; -}; - -template struct ArrayRefHelper { - // SFINAE: No "tag" or "type" typedef. -}; - } // namespace art -- cgit v1.2.3-59-g8ed1b