VCCC  2024.05
VisualCamp Common C++ library
span< T, Extent > Class Template Reference

#include </home/jarvis/actions-runner/jarvis-vccc-2/_work/vccc/vccc/include/vccc/__span/span.hpp>

+ Inheritance diagram for span< T, Extent >:

Detailed Description

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

Public Types

using element_type = T
 
using value_type = std::remove_cv_t< T >
 
using size_type = std::size_t
 
using difference_type = std::ptrdiff_t
 
using pointer = T *
 
using const_pointer = const T *
 
using reference = T &
 
using const_reference = const T &
 
using iterator = pointer
 
using reverse_iterator = std::reverse_iterator< iterator >
 

Public Member Functions

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_extentfirst (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_extentlast (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_extentsubspan (size_type Offset, size_type Count) const
 

Member Typedef Documentation

◆ const_pointer

using const_pointer = const T*

◆ const_reference

using const_reference = const T&

◆ difference_type

using difference_type = std::ptrdiff_t

◆ element_type

using element_type = T

◆ iterator

using iterator = pointer

◆ pointer

using pointer = T*

◆ reference

using reference = T&

◆ reverse_iterator

using reverse_iterator = std::reverse_iterator<iterator>

◆ size_type

using size_type = std::size_t

◆ value_type

using value_type = std::remove_cv_t<T>

Constructor & Destructor Documentation

◆ span() [1/15]

constexpr span ( )
inlineconstexprnoexcept

◆ span() [2/15]

constexpr span ( It  first,
size_type  size 
)
inlineconstexpr

◆ span() [3/15]

constexpr span ( It  first,
size_type  size 
)
inlineexplicitconstexpr

◆ span() [4/15]

constexpr span ( It  first,
End  last 
)
inlineconstexpr

◆ span() [5/15]

constexpr span ( It  first,
End  last 
)
inlineexplicitconstexpr

◆ span() [6/15]

constexpr span ( type_identity_t< element_type >(&)  arr[N])
inlineconstexprnoexcept

◆ span() [7/15]

constexpr span ( std::array< U, N > &  arr)
inlineconstexprnoexcept

◆ span() [8/15]

constexpr span ( const std::array< U, N > &  arr)
inlineconstexprnoexcept

◆ span() [9/15]

constexpr span ( R &&  range)
inlineconstexpr

◆ span() [10/15]

constexpr span ( R &&  range)
inlineexplicitconstexpr

◆ span() [11/15]

constexpr span ( std::initializer_list< value_type il)
inlineconstexprnoexcept

◆ span() [12/15]

constexpr span ( std::initializer_list< value_type il)
inlineexplicitconstexprnoexcept

◆ span() [13/15]

constexpr span ( const span< U, N > &  source)
inlineconstexprnoexcept

◆ span() [14/15]

constexpr span ( const span< U, N > &  source)
inlineexplicitconstexprnoexcept

◆ span() [15/15]

constexpr span ( const span< T, Extent > &  other)
constexprdefaultnoexcept

Member Function Documentation

◆ at()

constexpr reference at ( size_type  pos) const
inlineconstexpr

◆ back()

constexpr reference back ( ) const
inlineconstexpr

◆ begin()

constexpr iterator begin ( ) const
inlineconstexprnoexcept

◆ data()

constexpr pointer data ( ) const
inlineconstexprnoexcept

◆ empty()

constexpr bool empty ( ) const
inlineconstexprnoexcept

◆ end()

constexpr iterator end ( ) const
inlineconstexprnoexcept

◆ first() [1/2]

constexpr span<element_type, Count> first ( ) const
inlineconstexpr

◆ first() [2/2]

constexpr span<element_type, dynamic_extent> first ( size_type  Count) const
inlineconstexpr

◆ front()

constexpr reference front ( ) const
inlineconstexpr

◆ last() [1/2]

constexpr span<element_type, Count> last ( ) const
inlineconstexpr

◆ last() [2/2]

constexpr span<element_type, dynamic_extent> last ( size_type  Count) const
inlineconstexpr

◆ operator[]()

constexpr reference operator[] ( size_type  idx) const
inlineconstexpr

◆ rbegin()

constexpr reverse_iterator rbegin ( ) const
inlineconstexprnoexcept

◆ rend()

constexpr reverse_iterator rend ( ) const
inlineconstexprnoexcept

◆ size()

constexpr size_type size ( ) const
inlineconstexprnoexcept

◆ size_bytes()

constexpr size_type size_bytes ( ) const
inlineconstexprnoexcept

◆ subspan() [1/2]

constexpr subspan_type<Offset, Count> subspan ( ) const
inlineconstexpr

◆ subspan() [2/2]

constexpr span<element_type, dynamic_extent> subspan ( size_type  Offset,
size_type  Count 
) const
inlineconstexpr

The documentation for this class was generated from the following files: