From 7ea9e7c2b2dea2b3d130efd25f43674d01a1adca Mon Sep 17 00:00:00 2001 From: Mat Sutcliffe Date: Fri, 26 Jul 2019 21:41:51 +0100 Subject: [PATCH] Adjusted CRange nested typedefs, and protection against T700 --- src/blackmisc/range.h | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/blackmisc/range.h b/src/blackmisc/range.h index ed33523df..c52bfd7e9 100644 --- a/src/blackmisc/range.h +++ b/src/blackmisc/range.h @@ -179,17 +179,16 @@ namespace BlackMisc public: //! STL compatibility //! @{ - typedef typename std::iterator_traits::value_type key_type; typedef typename std::iterator_traits::value_type value_type; - typedef value_type &reference; - typedef const value_type &const_reference; - typedef value_type *pointer; - typedef const value_type *const_pointer; - typedef I const_iterator; - typedef I iterator; - typedef std::reverse_iterator const_reverse_iterator; - typedef std::reverse_iterator reverse_iterator; + typedef typename std::iterator_traits::reference reference; typedef typename std::iterator_traits::difference_type difference_type; + typedef const value_type &const_reference; + typedef value_type key_type; + typedef difference_type size_type; + typedef I iterator; + typedef I const_iterator; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; //! @} //! Constructor. @@ -212,7 +211,11 @@ namespace BlackMisc //! @} //! Create a range from reverse iterators. - CRange reverse() const { return { rbegin(), rend() }; } + CRange reverse() const + { + static_assert(std::is_same::value, "see https://dev.swift-project.org/T700"); + return { rbegin(), rend() }; + } //! Implicit conversion to any container of value_type which supports push_back. This will copy elements. template ::value>> @@ -237,7 +240,7 @@ namespace BlackMisc //! @} //! Returns the number of elements in the range. - difference_type size() const { return std::distance(begin(), end()); } + size_type size() const { return std::distance(begin(), end()); } //! Returns the element at the beginning of the range. Undefined if the range is empty. const_reference front() const { Q_ASSERT(!empty()); return *begin(); }