33 return "buffer_view<" + std::string(
typeid(
typename T::value_type).name()) +
">";
71 requires(!
std::is_const_v<T>);
73 requires
std::same_as<
std::remove_const_t<T>, U>
77 template <class It, class End>
78 requires
std::contiguous_iterator<It> &&
std::sentinel_for<End, It>
79 &&
std::same_as<
std::remove_const_t<
std::iter_value_t<It>>,
std::remove_const_t<T>>
82 [[nodiscard]] constexpr
bool empty() const noexcept;
95 template <class U = T>
96 constexpr U*
data() noexcept;
98 template <class U = T>
99 constexpr const U*
data() const noexcept;
123 constexpr operator
buffer<
std::remove_const_t<T>>() const;
140 : p_data(other.p_data)
141 , m_size(other.m_size)
151 p_data = other.p_data;
152 m_size = other.m_size;
160 requires(!std::is_const_v<T>)
168 requires std::same_as<std::remove_const_t<T>, U>
184 template <
class It,
class End>
185 requires std::contiguous_iterator<It> && std::sentinel_for<End, It>
186 && std::same_as<std::remove_const_t<std::iter_value_t<It>>, std::remove_const_t<T>>
188 : p_data(
std::to_address(first))
189 , m_size(static_cast<
size_type>(
std::distance(first, last)))
244 return data()[m_size - 1];
251 return data()[m_size - 1];
259# pragma GCC diagnostic push
260# pragma GCC diagnostic ignored "-Wcast-align"
262 return reinterpret_cast<U*
>(p_data);
264# pragma GCC diagnostic pop
273# pragma GCC diagnostic push
274# pragma GCC diagnostic ignored "-Wcast-align"
276 return reinterpret_cast<const U*
>(p_data);
278# pragma GCC diagnostic pop
357 std::swap(p_data, rhs.p_data);
358 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 buffer_view & operator=(const buffer_view &)
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 buffer_view(buffer_view &&) noexcept=default
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 void increase(const std::string &key)
constexpr bool is_type_instance_of_v
Variable template for convenient access to is_type_instance_of.
SPARROW_API bool operator==(const array &lhs, const array &rhs)
Compares the content of two arrays.
Extensions to the C++ standard library.