6#ifndef TRUST_ARRAYVIEW_H
7#define TRUST_ARRAYVIEW_H
11 #pragma warning(disable : 4365 4987)
94 template<typename U, typename std::enable_if<!std::is_rvalue_reference<U &&>::value,
int>::type = 0>
145 return this->operator[](index);
149 return this->operator[](index);
153 assert(offset <= sz);
154 assert((offset + count) <= sz);
155 return {ptr + offset, count};
165 return {ptr + (sz - count), count};
173template<
typename T,
typename U>
181 #if __cplusplus >= 201402L || (defined(_MSC_VER) && _MSC_VER >= 1900)
190template<
typename T,
typename U>
192 return !(lhs == rhs);
195template<
typename T,
typename TContainer>
197 if (lhs.
size() != rhs.size()) {
200 #if __cplusplus >= 201402L || (defined(_MSC_VER) && _MSC_VER >= 1900)
203 return std::equal(lhs.
begin(), lhs.
end(), rhs.begin(), rhs.end());
205 return std::equal(lhs.
begin(), lhs.
end(), rhs.begin());
209template<
typename T,
typename TContainer>
211 return !(lhs == rhs);
214template<
typename T,
typename TContainer>
219template<
typename T,
typename TContainer>
221 return !(lhs == rhs);
A view over a continuous sequence of objects.
Definition: ArrayView.h:55
typename ArrayViewTraits< T >::pointer pointer
Definition: ArrayView.h:61
~ArrayView() noexcept=default
const_pointer end() const
Definition: ArrayView.h:130
const_pointer data() const
Definition: ArrayView.h:106
typename ArrayViewTraits< T >::difference_type difference_type
Definition: ArrayView.h:63
ArrayView(ArrayView< U > &&src)
Definition: ArrayView.h:91
ArrayView subview(std::size_t offset, std::size_t count) const
Definition: ArrayView.h:152
pointer ptr
Definition: ArrayView.h:169
ArrayView(ArrayView< U > &src)
Definition: ArrayView.h:83
const_pointer begin() const
Definition: ArrayView.h:126
const_pointer cend() const
Definition: ArrayView.h:122
typename ArrayViewTraits< T >::const_reference const_reference
Definition: ArrayView.h:59
typename ArrayViewTraits< T >::value_type value_type
Definition: ArrayView.h:57
reference at(std::size_t index)
Definition: ArrayView.h:144
pointer data()
Definition: ArrayView.h:102
pointer end()
Definition: ArrayView.h:114
ArrayView(const ArrayView< U > &src)
Definition: ArrayView.h:87
pointer begin()
Definition: ArrayView.h:110
size_type size() const
Definition: ArrayView.h:98
typename ArrayViewTraits< T >::reference reference
Definition: ArrayView.h:58
ArrayView first(std::size_t count) const
Definition: ArrayView.h:158
typename ArrayViewTraits< T >::size_type size_type
Definition: ArrayView.h:62
const_pointer cbegin() const
Definition: ArrayView.h:118
typename ArrayViewTraits< T >::const_pointer const_pointer
Definition: ArrayView.h:60
ArrayView last(std::size_t count) const
Definition: ArrayView.h:163
ArrayView(U &&src)
Definition: ArrayView.h:95
reference operator[](std::size_t index)
Definition: ArrayView.h:134
const_reference operator[](std::size_t index) const
Definition: ArrayView.h:139
const_reference at(std::size_t index) const
Definition: ArrayView.h:148
ArrayView(std::nullptr_t, size_type)
Definition: ArrayView.h:79
size_type sz
Definition: ArrayView.h:170
Definition: ArrayView.h:20
bool operator==(const TContainer &lhs, const ArrayView< T > &rhs)
Definition: ArrayView.h:215
bool operator!=(const TContainer &lhs, const ArrayView< T > &rhs)
Definition: ArrayView.h:220
const T & const_reference
Definition: ArrayView.h:37
std::size_t size_type
Definition: ArrayView.h:40
std::ptrdiff_t difference_type
Definition: ArrayView.h:41
const T value_type
Definition: ArrayView.h:35
const T * pointer
Definition: ArrayView.h:38
const T & reference
Definition: ArrayView.h:36
const T * const_pointer
Definition: ArrayView.h:39
Definition: ArrayView.h:23
T value_type
Definition: ArrayView.h:24
T & reference
Definition: ArrayView.h:25
const T & const_reference
Definition: ArrayView.h:26
const T * const_pointer
Definition: ArrayView.h:28
std::size_t size_type
Definition: ArrayView.h:29
T * pointer
Definition: ArrayView.h:27
std::ptrdiff_t difference_type
Definition: ArrayView.h:30