SELF_CHECK (sum == 1 + 2 + 3 + 4);
}
+template<typename T>
+static void
+check_iterator ()
+{
+ T data[] = {1, 2, 3, 4};
+ gdb::array_view<T> view (data);
+
+ typename std::decay<T>::type sum = 0;
+ for (typename gdb::array_view<T>::iterator it = view.begin ();
+ it != view.end (); it++)
+ {
+ *it *= 2;
+ sum += *it;
+ }
+
+ SELF_CHECK (sum == 2 + 4 + 6 + 8);
+}
+
+template<typename T>
+static void
+check_const_iterator ()
+{
+ T data[] = {1, 2, 3, 4};
+ gdb::array_view<T> view (data);
+
+ typename std::decay<T>::type sum = 0;
+ for (typename gdb::array_view<T>::const_iterator it = view.cbegin ();
+ it != view.cend (); it++)
+ sum += *it;
+
+ SELF_CHECK (sum == 1 + 2 + 3 + 4);
+}
+
/* Entry point. */
static void
check_range_for<gdb_byte> ();
check_range_for<const gdb_byte> ();
+ check_iterator<gdb_byte> ();
+ check_const_iterator<gdb_byte> ();
+ check_const_iterator<const gdb_byte> ();
/* Check that the right ctor overloads are taken when the element is
a container. */
using reference = T &;
using const_reference = const T &;
using size_type = size_t;
+ using const_iterator = const T *;
+ using iterator = T *;
/* Default construction creates an empty view. */
constexpr array_view () noexcept
constexpr T *data () noexcept { return m_array; }
constexpr const T *data () const noexcept { return m_array; }
- constexpr T *begin () const noexcept { return m_array; }
- constexpr const T *cbegin () const noexcept { return m_array; }
+ constexpr iterator begin () const noexcept { return m_array; }
+ constexpr const_iterator cbegin () const noexcept { return m_array; }
- constexpr T *end () const noexcept { return m_array + m_size; }
- constexpr const T *cend () const noexcept { return m_array + m_size; }
+ constexpr iterator end () const noexcept { return m_array + m_size; }
+ constexpr const_iterator cend () const noexcept { return m_array + m_size; }
constexpr reference operator[] (size_t index) noexcept
{