@@ -233,6 +233,16 @@ struct Span {
233233 */
234234 typedef element_type &reference;
235235
236+ /* *
237+ * Iterator to an ElementType
238+ */
239+ typedef pointer iterator;
240+
241+ /* *
242+ * Reverse iterator to an ElementType
243+ */
244+ typedef std::reverse_iterator<iterator> reverse_iterator;
245+
236246 /* *
237247 * Size of the Extent; -1 if dynamic.
238248 */
@@ -349,6 +359,46 @@ struct Span {
349359 return size () == 0 ;
350360 }
351361
362+ /* *
363+ * Return an iterator to the first element of the sequence.
364+ *
365+ * @return An iterator to the first element of the sequence.
366+ */
367+ iterator begin () const
368+ {
369+ return _data;
370+ }
371+
372+ /* *
373+ * Return an iterator to the element following the last element of the sequence.
374+ *
375+ * @return An iterator to the element following the last element of the sequence.
376+ */
377+ iterator end () const
378+ {
379+ return _data + Extent;
380+ }
381+
382+ /* *
383+ * Return a reverse_iterator to the first element of the reversed sequence.
384+ *
385+ * @return A reverse_iterator to the first element of the reversed sequence.
386+ */
387+ reverse_iterator rbegin () const
388+ {
389+ return reverse_iterator (end ());
390+ }
391+
392+ /* *
393+ * Return a reverse_iterator to the element following the last element of the reversed sequence.
394+ *
395+ * @return A reverse_iterator to the element following the last element of the reversed sequence.
396+ */
397+ reverse_iterator rend () const
398+ {
399+ return reverse_iterator (begin ());
400+ }
401+
352402 /* *
353403 * Returns a reference to the element at position @p index.
354404 *
@@ -534,6 +584,16 @@ struct Span<ElementType, SPAN_DYNAMIC_EXTENT> {
534584 */
535585 typedef element_type &reference;
536586
587+ /* *
588+ * Iterator to an ElementType
589+ */
590+ typedef pointer iterator;
591+
592+ /* *
593+ * Reverse iterator to an ElementType
594+ */
595+ typedef std::reverse_iterator<iterator> reverse_iterator;
596+
537597 /* *
538598 * Size of the Extent; -1 if dynamic.
539599 */
@@ -644,6 +704,46 @@ struct Span<ElementType, SPAN_DYNAMIC_EXTENT> {
644704 return size () == 0 ;
645705 }
646706
707+ /* *
708+ * Return an iterator to the first element of the sequence.
709+ *
710+ * @return An iterator to the first element of the sequence.
711+ */
712+ iterator begin () const
713+ {
714+ return _data;
715+ }
716+
717+ /* *
718+ * Return an iterator to the element following the last element of the sequence.
719+ *
720+ * @return An iterator to the element following the last element of the sequence.
721+ */
722+ iterator end () const
723+ {
724+ return _data + _size;
725+ }
726+
727+ /* *
728+ * Return a reverse_iterator to the first element of the reversed sequence.
729+ *
730+ * @return A reverse_iterator to the first element of the reversed sequence.
731+ */
732+ reverse_iterator rbegin () const
733+ {
734+ return reverse_iterator (end ());
735+ }
736+
737+ /* *
738+ * Return a reverse_iterator to the element following the last element of the reversed sequence.
739+ *
740+ * @return A reverse_iterator to the element following the last element of the reversed sequence.
741+ */
742+ reverse_iterator rend () const
743+ {
744+ return reverse_iterator (begin ());
745+ }
746+
647747 /* *
648748 * Access to an element of the sequence.
649749 *
0 commit comments