SpECTRE
v2024.12.16
|
Create a span/view on a range, which is cheap to copy (one pointer). More...
#include <Gsl.hpp>
Public Types | |
using | element_type = ElementType |
using | value_type = std::remove_cv_t< ElementType > |
using | index_type = size_t |
using | pointer = element_type * |
using | reference = element_type & |
using | iterator = implementation defined |
using | const_iterator = implementation defined |
using | reverse_iterator = std::reverse_iterator< iterator > |
using | const_reverse_iterator = std::reverse_iterator< const_iterator > |
using | size_type = index_type |
Public Member Functions | |
constexpr | span (pointer ptr, index_type count) |
constexpr | span (pointer firstElem, pointer lastElem) |
template<std::size_t N> | |
constexpr | span (element_type(&arr)[N]) |
template<std::size_t N, Requires<(N > 0)> = nullptr> | |
constexpr | span (std::array< std::remove_const_t< element_type >, N > &arr) |
constexpr | span (std::array< std::remove_const_t< element_type >, 0 > &) |
template<std::size_t N, Requires<(N > 0)> = nullptr> | |
constexpr | span (const std::array< std::remove_const_t< element_type >, N > &arr) |
constexpr | span (const std::array< std::remove_const_t< element_type >, 0 > &) |
template<class Container , Requires< !detail::is_span< Container >::value &&!detail::is_std_array< Container >::value &&std::is_convertible< typename Container::pointer, pointer >::value &&std::is_convertible< typename Container::pointer, decltype(std::declval< Container >().data())>::value > | |
constexpr | span (Container &cont) |
template<class Container , Requires< std::is_const< element_type >::value &&!detail::is_span< Container >::value &&std::is_convertible< typename Container::pointer, pointer >::value &&std::is_convertible< typename Container::pointer, decltype(std::declval< Container >().data())>::value > | |
constexpr | span (const Container &cont) |
constexpr | span (const span &other)=default |
template<class OtherElementType , std::ptrdiff_t OtherExtent, Requires< detail::is_allowed_extent_conversion< OtherExtent, Extent >::value &&detail::is_allowed_element_type_conversion< OtherElementType, element_type >::value > = nullptr> | |
constexpr | span (const span< OtherElementType, OtherExtent > &other) |
constexpr span & | operator= (const span &other)=default |
template<std::ptrdiff_t Count> | |
constexpr span< element_type, Count > | first () const |
template<std::ptrdiff_t Count> | |
constexpr span< element_type, Count > | last () const |
template<std::ptrdiff_t Offset, std::ptrdiff_t Count = dynamic_extent> | |
constexpr auto | subspan () const -> typename detail::calculate_subspan_type< ElementType, Extent, Offset, Count >::type |
constexpr span< element_type, dynamic_extent > | first (index_type count) const |
constexpr span< element_type, dynamic_extent > | last (index_type count) const |
constexpr span< element_type, dynamic_extent > | subspan (index_type offset, index_type count=dynamic_extent) const |
constexpr index_type | size () const |
constexpr index_type | size_bytes () const |
constexpr bool | empty () const |
constexpr reference | operator[] (index_type idx) const |
constexpr reference | at (index_type idx) const |
constexpr reference | operator() (index_type idx) const |
constexpr pointer | data () const |
constexpr iterator | begin () const |
constexpr iterator | end () const |
constexpr const_iterator | cbegin () const |
constexpr const_iterator | cend () const |
constexpr reverse_iterator | rbegin () const |
constexpr reverse_iterator | rend () const |
constexpr const_reverse_iterator | crbegin () const |
constexpr const_reverse_iterator | crend () const |
Static Public Attributes | |
static constexpr index_type | extent {Extent} |
Create a span/view on a range, which is cheap to copy (one pointer).