50 requires(!std::is_const_v<T>);
52 requires std::same_as<std::remove_const_t<T>, U>
56 template <
class It,
class End>
57 requires std::contiguous_iterator<It> && std::sentinel_for<End, It>
58 && std::same_as<std::remove_const_t<std::iter_value_t<It>>, std::remove_const_t<T>>
61 [[nodiscard]]
bool empty() const noexcept;
74 template <class U = T>
77 template <class U = T>
78 const U*
data() const noexcept;
102 explicit operator
buffer<
std::remove_const_t<T>>() const;
119 requires(!
std::is_const_v<T>)
127 requires std::same_as<std::remove_const_t<T>, U>
142 template <
class It,
class End>
143 requires std::contiguous_iterator<It> && std::sentinel_for<End, It>
144 && std::same_as<std::remove_const_t<std::iter_value_t<It>>, std::remove_const_t<T>>
146 : p_data(
std::to_address(first))
147 , m_size(static_cast<
size_type>(
std::distance(first, last)))
202 return data()[m_size - 1];
209 return data()[m_size - 1];
217# pragma GCC diagnostic push
218# pragma GCC diagnostic ignored "-Wcast-align"
220 return reinterpret_cast<U*
>(p_data);
222# pragma GCC diagnostic pop
231# pragma GCC diagnostic push
232# pragma GCC diagnostic ignored "-Wcast-align"
234 return reinterpret_cast<const U*
>(p_data);
236# pragma GCC diagnostic pop
315 std::swap(p_data, rhs.p_data);
316 std::swap(m_size, rhs.m_size);
344 return {p_data, p_data + m_size};
const_iterator cend() const
bool empty() const noexcept
pointer_iterator< pointer > iterator
const_reverse_iterator crend() const
const T & const_reference
std::ptrdiff_t difference_type
pointer_iterator< const_pointer > const_iterator
reverse_iterator rbegin()
reference operator[](size_type)
buffer_view subrange(size_type pos, size_type count) const
const_iterator cbegin() const
std::reverse_iterator< iterator > reverse_iterator
size_type max_size() const noexcept
buffer_view< T > self_type
void swap(buffer_view &rhs) noexcept
const_reverse_iterator crbegin() const
std::reverse_iterator< const_iterator > const_reverse_iterator
size_type size() const noexcept
Object that owns a piece of contiguous memory.
#define SPARROW_ASSERT_TRUE(expr__)
SPARROW_API bool operator==(const array &lhs, const array &rhs)
Compares the content of two arrays.