diff --git a/src/util/range.hpp b/src/util/range.hpp index 7777444d0f65d7feebc03f8f3e988a234462cdf6..2439ca74ee785fac1f909e92b3189bbfcd6f5da2 100644 --- a/src/util/range.hpp +++ b/src/util/range.hpp @@ -87,9 +87,9 @@ struct range { std::swap(right, other.right); } - decltype(*left) front() const { return *left; } + auto front() const -> decltype(*left) { return *left; } - decltype(*left) back() const { return *upto(left, right); } + auto back() const -> decltype(*left) { return *upto(left, right); } template <typename V = iterator> enable_if_t<is_random_access_iterator<V>::value, decltype(*left)> @@ -200,7 +200,7 @@ public: // forward and input iterator requirements - auto operator*() const -> decltype(*iter()) { return *iter(); } + auto operator*() const -> decltype(*(this->iter())) { return *iter(); } I operator->() const { return e_.template ptr<0>(); } @@ -271,7 +271,7 @@ public: return iter()-x.iter(); } - auto operator[](difference_type n) const -> decltype(*iter()){ + auto operator[](difference_type n) const -> decltype(*(this->iter())) { return *(iter()+n); }