std::span (3) - Linux Manuals

std::span: std::span

NAME

std::span - std::span

Synopsis


Defined in header <span>
template<
class T, (since C++20)
std::size_t Extent = std::dynamic_extent
> class span;


The class template span describes an object that can refer to a contiguous sequence of objects with the first element of the sequence at position zero. A span can either have a static extent, in which case the number of elements in the sequence is known and encoded in the type, or a dynamic extent.
A typical implementation holds only two members: a pointer to T and a size.

Template parameters


T - element type; must be a complete type that is not an abstract class type
Extent - the number of elements in the sequence, or std::dynamic_extent if dynamic

Member types


Member type Definition
element_type T
value_type std::remove_cv_t<T>
index_type std::size_t
difference_type std::ptrdiff_t
pointer T*
const_pointer const T*
reference T&
const_reference const T&
iterator implementation-defined LegacyRandomAccessIterator, ConstexprIterator, and LegacyContiguousIterator whose value_type is value_type
const_iterator implementation-defined constant LegacyRandomAccessIterator, ConstexprIterator, and LegacyContiguousIterator whose value_type is value_type
reverse_iterator std::reverse_iterator<iterator>
const_reverse_iterator std::reverse_iterator<const_iterator>


Note: iterator is a mutable iterator if T is not const-qualified.
All requirements on the iterator types of a Container applies to the iterator and const_iterator types of span as well.


Member constant


static constexpr std::size_t extent = Extent;

Member functions


              constructs a span
constructor (public member function)
              assigns a span
operator= (public member function)

Iterators


              returns an iterator to the beginning of the sequence
begin (public member function)
cbegin
              returns an iterator to the end of the sequence
end (public member function)
cend
              returns a reverse iterator to the beginning of the sequence
rbegin (public member function)
crbegin
              returns a reverse iterator to the end of the sequence
rend (public member function)
crend

Element access


              access the first element
front (public member function)
              access the last element
back (public member function)
              accesses an element of the sequence
operator[] (public member function)
              returns a pointer to the beginning of the sequence of elements
data (public member function)

Observers


              returns the number of elements in the sequence
size (public member function)
              returns the size of the sequence in bytes
size_bytes (public member function)
              checks if the sequence is empty
empty (public member function)


 Subviews


              obtains a subspan consisting of the first N elements of the sequence
first (public member function)
              obtains a subspan consisting of the last N elements of the sequence
last (public member function)
              obtains a subspan
subspan (public member function)

Non-member functions


                    returns iterators to the beginning and the end of the span
begin (function)
end
                    converts a span into a view of its underlying bytes
as_bytes (function template)
as_writable_bytes
                    accesses an element of a static-extent span
std::get(std::span) (function template)


Non-member constant


dynamic_extent a constant of type size_t signifying that the span has dynamic extent
               (constant)
(C++20)

Helper classes


                              obtains the size of a static-extent span
std::tuple_size<std::span> (class template specialization)
                              obtains the type of the elements of a static-extent span
std::tuple_element<std::span> (class template specialization)


Deduction_guides