13#ifndef CXXUTILS_SPAN_H
14#define CXXUTILS_SPAN_H
35template <
class T,
class U>
60 :
public std::ranges::view_base
318template <
detail::IsContiguousContainer CONTAINER>
Simplified version of the C++20 std::span.
span(const span &)=default
const container_value_type * const_pointer
std::reverse_iterator< iterator > reverse_iterator
container_value_type * pointer
constexpr reverse_iterator rend() noexcept
constexpr size_type size() const noexcept
Return the size of the span.
constexpr reference back() noexcept
constexpr reverse_iterator rbegin() noexcept
container_value_type * m_ptr
const element_type & const_reference
constexpr size_type size_bytes() const noexcept
constexpr reference at(size_type i)
constexpr span first(size_type n) noexcept
container_value_type element_type
constexpr iterator begin() noexcept
constexpr pointer data() noexcept
span & operator=(const span &)=default
std::reverse_iterator< const_iterator > const_reverse_iterator
constexpr span last(size_type n) noexcept
constexpr iterator end() noexcept
constexpr span subspan(size_type offs, size_type n=dynamic_extent) noexcept
constexpr reference front() noexcept
std::remove_cv_t< container_value_type > value_type
std::ptrdiff_t difference_type
const_pointer const_iterator
constexpr bool empty() const noexcept
A couple standard-library related concepts.
auto end(range_with_at< T > &s)
span(T *ptr, std::size_t sz) -> span< T >
A couple needed deduction guides.
auto make_span(CONTAINER &c)
Helper to make a span from a container.
constexpr size_t dynamic_extent
Used to specify a subrange of indefinite size in subspan().
constexpr bool valid_span_type_v
Is U* a valid type to use to initialize a span<T>?