1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ARRAY_SPAN_H
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ARRAY_SPAN_H
9#if __cplusplus >= 202002L
13using Span = std::span;
17#if __cplusplus < 202002L
27template <
typename T =
double>
Non-owning container taking a pointer to the data buffer and its size and exposing routines for itera...
Definition: Span.h:28
std::remove_cv_t< T > value_type
Definition: Span.h:31
iterator m_buffer
Definition: Span.h:79
Span(T *data, size_type size)
Definition: Span.h:41
T const * const_iterator
Definition: Span.h:37
Span(Span< T > &&source) noexcept
Definition: Span.h:43
T & reference
Definition: Span.h:32
const_iterator cbegin() const
Definition: Span.h:68
const_reference operator[](size_type i) const
Definition: Span.h:54
reference operator[](size_type i)
Definition: Span.h:53
friend void swap(Span< T > &x, Span< T > &y)
Swap content of two Spans.
Definition: Span.h:57
size_type m_size
Definition: Span.h:80
const_iterator end() const
Definition: Span.h:71
const_iterator cend() const
Definition: Span.h:72
T element_type
Definition: Span.h:30
T & const_reference
Definition: Span.h:33
Span & operator=(Span &&source) noexcept
Definition: Span.h:48
size_t size_type
Definition: Span.h:34
const_iterator begin() const
Definition: Span.h:67
const_iterator data() const
Definition: Span.h:64
bool empty() const
Definition: Span.h:76
iterator begin()
Definition: Span.h:66
size_type size() const
Definition: Span.h:74
iterator end()
Definition: Span.h:70
Span(const Span &source)=default
Span & operator=(const Span &source)=default
iterator data()
Definition: Span.h:63
T * iterator
Definition: Span.h:36
std::ptrdiff_t difference_type
Definition: Span.h:35
auto begin(Span< T > &x)
Definition: Span.h:84
auto end(Span< T > &x)
Definition: Span.h:94
Definition: ArrayHandler.h:22