template<typename T, std::size_t Extent>
class vccc::span< T, Extent >
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 at compile-time and encoded in the type, or a dynamic extent.
If a span has dynamic extent, a typical implementation holds two members: a pointer to T
and a size. A span with static extent may have only one member: a pointer to T
.
- See also
- std::span
|
constexpr | span () noexcept |
|
template<typename It , std::enable_if_t< conjunction< bool_constant<(Extent==dynamic_extent)>, detail::span_ctor_first_count< It, element_type > >::value, int > = 0> |
constexpr | span (It first, size_type size) |
|
template<typename It , std::enable_if_t< conjunction< bool_constant<(Extent !=dynamic_extent)>, detail::span_ctor_first_count< It, element_type > >::value, int > = 0> |
constexpr | span (It first, size_type size) |
|
template<typename It , typename End , std::enable_if_t< conjunction< bool_constant<(Extent==dynamic_extent)>, detail::span_ctor_first_last< It, End, element_type > >::value, int > = 0> |
constexpr | span (It first, End last) |
|
template<typename It , typename End , std::enable_if_t< conjunction< bool_constant<(Extent !=dynamic_extent)>, detail::span_ctor_first_last< It, End, element_type > >::value, int > = 0> |
constexpr | span (It first, End last) |
|
template<std::size_t N, std::enable_if_t< conjunction< bool_constant<(Extent==dynamic_extent)||(Extent==N)>, std::is_convertible< type_identity_t< element_type >, element_type > >::value, int > = 0> |
constexpr | span (type_identity_t< element_type >(&arr)[N]) noexcept |
|
template<typename U , std::size_t N, std::enable_if_t< conjunction< bool_constant<(Extent==dynamic_extent)||(Extent==N)>, std::is_convertible< U, element_type > >::value, int > = 0> |
constexpr | span (std::array< U, N > &arr) noexcept |
|
template<typename U , std::size_t N, std::enable_if_t< conjunction< bool_constant<(Extent==dynamic_extent)||(Extent==N)>, std::is_convertible< const U, element_type > >::value, int > = 0> |
constexpr | span (const std::array< U, N > &arr) noexcept |
|
template<typename R , std::enable_if_t< conjunction< bool_constant< Extent==dynamic_extent >, detail::span_ctor_range< R, element_type > >::value, int > = 0> |
constexpr | span (R &&range) |
|
template<typename R , std::enable_if_t< conjunction< bool_constant< Extent !=dynamic_extent >, detail::span_ctor_range< R, element_type > >::value, int > = 0> |
constexpr | span (R &&range) |
|
template<typename E = element_type, std::enable_if_t< conjunction< bool_constant< Extent==dynamic_extent >, std::is_const< E > >::value, int > = 0> |
constexpr | span (std::initializer_list< value_type > il) noexcept |
|
template<typename E = element_type, std::enable_if_t< conjunction< bool_constant< Extent !=dynamic_extent >, std::is_const< E > >::value, int > = 0> |
constexpr | span (std::initializer_list< value_type > il) noexcept |
|
template<typename U , std::size_t N, std::enable_if_t< conjunction< bool_constant<!(Extent !=dynamic_extent &&N==dynamic_extent)>, bool_constant<(Extent==dynamic_extent||N==dynamic_extent||N==Extent)>, std::is_convertible< U, element_type > >::value, int > = 0> |
constexpr | span (const span< U, N > &source) noexcept |
|
template<typename U , std::size_t N, std::enable_if_t< conjunction< bool_constant<(Extent !=dynamic_extent &&N==dynamic_extent)>, bool_constant<(Extent==dynamic_extent||N==dynamic_extent||N==Extent)>, std::is_convertible< U, element_type > >::value, int > = 0> |
constexpr | span (const span< U, N > &source) noexcept |
|
constexpr | span (const span &other) noexcept=default |
|
constexpr iterator | begin () const noexcept |
|
constexpr iterator | end () const noexcept |
|
constexpr reverse_iterator | rbegin () const noexcept |
|
constexpr reverse_iterator | rend () const noexcept |
|
constexpr reference | front () const |
|
constexpr reference | back () const |
|
constexpr reference | at (size_type pos) const |
|
constexpr reference | operator[] (size_type idx) const |
|
constexpr pointer | data () const noexcept |
|
constexpr size_type | size () const noexcept |
|
constexpr size_type | size_bytes () const noexcept |
|
constexpr bool | empty () const noexcept |
|
template<std::size_t Count, std::enable_if_t<(Count<=Extent), int > = 0> |
constexpr span< element_type, Count > | first () const |
|
constexpr span< element_type, dynamic_extent > | first (size_type Count) const |
|
template<std::size_t Count, std::enable_if_t<(Count<=Extent), int > = 0> |
constexpr span< element_type, Count > | last () const |
|
constexpr span< element_type, dynamic_extent > | last (size_type Count) const |
|
template<std::size_t Offset, std::size_t Count = dynamic_extent, std::enable_if_t<(Offset<=Extent) &&(Count==dynamic_extent||Count<=(Extent - Offset)), int > = 0> |
constexpr subspan_type< Offset, Count > | subspan () const |
|
constexpr span< element_type, dynamic_extent > | subspan (size_type Offset, size_type Count) const |
|