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]]
constexpr bool empty() const noexcept;
76 template <class U = T>
77 constexpr U*
data() noexcept;
79 template <class U = T>
80 constexpr const U*
data() const noexcept;
104 constexpr 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);
constexpr bool empty() const noexcept
constexpr reverse_iterator rend()
constexpr U * data() noexcept
pointer_iterator< pointer > iterator
constexpr const_iterator cbegin() const
constexpr buffer_view subrange(size_type pos, size_type count) const
const T & const_reference
std::ptrdiff_t difference_type
pointer_iterator< const_pointer > const_iterator
constexpr size_type max_size() const noexcept
constexpr reference back()
constexpr reference operator[](size_type)
constexpr size_type size() const noexcept
constexpr const_iterator cend() const
constexpr reference front()
constexpr iterator begin()
constexpr reverse_iterator rbegin()
std::reverse_iterator< iterator > reverse_iterator
buffer_view< T > self_type
constexpr buffer_view()=default
constexpr const_reverse_iterator crend() const
constexpr void swap(buffer_view &rhs) noexcept
constexpr const_reverse_iterator crbegin() const
std::reverse_iterator< const_iterator > const_reverse_iterator
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.