52 requires(!std::is_const_v<T>);
54 requires std::same_as<std::remove_const_t<T>, U>
58 template <
class It,
class End>
59 requires std::contiguous_iterator<It> && std::sentinel_for<End, It>
60 && std::same_as<std::remove_const_t<std::iter_value_t<It>>, std::remove_const_t<T>>
63 [[nodiscard]]
bool empty() const noexcept;
76 template <class U = T>
79 template <class U = T>
80 const U*
data() const noexcept;
104 operator
buffer<
std::remove_const_t<T>>() const;
121 requires(!
std::is_const_v<T>)
129 requires std::same_as<std::remove_const_t<T>, U>
145 template <
class It,
class End>
146 requires std::contiguous_iterator<It> && std::sentinel_for<End, It>
147 && std::same_as<std::remove_const_t<std::iter_value_t<It>>, std::remove_const_t<T>>
149 : p_data(
std::to_address(first))
150 , m_size(static_cast<
size_type>(
std::distance(first, last)))
205 return data()[m_size - 1];
212 return data()[m_size - 1];
220# pragma GCC diagnostic push
221# pragma GCC diagnostic ignored "-Wcast-align"
223 return reinterpret_cast<U*
>(p_data);
225# pragma GCC diagnostic pop
234# pragma GCC diagnostic push
235# pragma GCC diagnostic ignored "-Wcast-align"
237 return reinterpret_cast<const U*
>(p_data);
239# pragma GCC diagnostic pop
318 std::swap(p_data, rhs.p_data);
319 std::swap(m_size, rhs.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.