30 constexpr std::ptrdiff_t
size() const noexcept {
return m_size; }
38 friend constexpr
bool operator==(
const Span& a,
const Span& b) noexcept {
return a.size() == b.size() && std::equal(a.begin(), a.end(), b.begin()); }
40 friend constexpr
bool operator<(
const Span& a,
const Span& b) noexcept {
return std::lexicographical_compare(a.begin(), a.end(), b.begin(), b.end()); }
54 template<
typename A,
int N>
C * m_data
Definition: span.h:19
constexpr Span(C *data, C *end) noexcept
Definition: span.h:25
friend constexpr bool operator<(const Span &a, const Span &b) noexcept
Definition: span.h:40
constexpr Span< A > MakeSpan(A(&a)[N])
Definition: span.h:55
constexpr Span(C *data, std::ptrdiff_t size) noexcept
Definition: span.h:24
constexpr Span< C > subspan(std::ptrdiff_t offset) const noexcept
Definition: span.h:33
constexpr C * begin() const noexcept
Definition: span.h:28
std::ptrdiff_t m_size
Definition: span.h:20
constexpr C * data() const noexcept
Definition: span.h:27
friend constexpr bool operator<=(const Span &a, const Span &b) noexcept
Definition: span.h:41
constexpr Span< C > last(std::ptrdiff_t count) const noexcept
Definition: span.h:36
friend constexpr bool operator>=(const Span &a, const Span &b) noexcept
Definition: span.h:43
constexpr std::ptrdiff_t size() const noexcept
Definition: span.h:30
constexpr C & operator[](std::ptrdiff_t pos) const noexcept
Definition: span.h:31
constexpr Span< C > subspan(std::ptrdiff_t offset, std::ptrdiff_t count) const noexcept
Definition: span.h:34
constexpr Span() noexcept
Definition: span.h:23
constexpr Span< C > first(std::ptrdiff_t count) const noexcept
Definition: span.h:35
static int count
Definition: tests.c:45
friend constexpr bool operator!=(const Span &a, const Span &b) noexcept
Definition: span.h:39
friend constexpr bool operator==(const Span &a, const Span &b) noexcept
Definition: span.h:38
friend constexpr bool operator>(const Span &a, const Span &b) noexcept
Definition: span.h:42
constexpr C * end() const noexcept
Definition: span.h:29