1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ARRAY_SPAN_H
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ARRAY_SPAN_H
7#if defined(USE_STD_SPAN) && __cplusplus >= 202002L
13#if defined(USE_STD_SPAN) && __cplusplus >= 202002L
16using Span = std::span<T>;
20#if !defined(USE_STD_SPAN) || __cplusplus < 202002L
30template <
typename T =
double>
46 template <
typename U,
typename = std::enable_if_t<std::is_same_v<const U, T>>>
Non-owning container taking a pointer to the data buffer and its size and exposing routines for itera...
Definition Span.h:31
std::remove_cv_t< T > value_type
Definition Span.h:34
iterator m_buffer
Definition Span.h:85
Span(T *data, size_type size)
Definition Span.h:44
T const * const_iterator
Definition Span.h:40
Span(Span< T > &&source) noexcept
Definition Span.h:49
T & reference
Definition Span.h:35
const_iterator cbegin() const
Definition Span.h:74
const_reference operator[](size_type i) const
Definition Span.h:60
reference operator[](size_type i)
Definition Span.h:59
friend void swap(Span< T > &x, Span< T > &y)
Swap content of two Spans.
Definition Span.h:63
size_type m_size
Definition Span.h:86
const_iterator end() const
Definition Span.h:77
const_iterator cend() const
Definition Span.h:78
const T & const_reference
Definition Span.h:36
T element_type
Definition Span.h:33
Span & operator=(Span &&source) noexcept
Definition Span.h:54
size_t size_type
Definition Span.h:37
const_iterator begin() const
Definition Span.h:73
Span(const Span< U > &source)
A view of constant elements from a view of modifiable ones, as for std::span.
Definition Span.h:47
const_iterator data() const
Definition Span.h:70
bool empty() const
Definition Span.h:82
iterator begin()
Definition Span.h:72
size_type size() const
Definition Span.h:80
iterator end()
Definition Span.h:76
Span(const Span &source)=default
Span & operator=(const Span &source)=default
iterator data()
Definition Span.h:69
T * iterator
Definition Span.h:39
std::ptrdiff_t difference_type
Definition Span.h:38
auto begin(Span< T > &x)
Definition Span.h:90
auto end(Span< T > &x)
Definition Span.h:100
Definition ArrayHandler.h:19