30 template<DerivedWrapper<T> U,
size_t N>
31 constexpr SpanRef(U (&other)[N])
32 : value(
static_cast<T*
>(other), N)
36 template<DerivedWrapper<T> U>
37 constexpr SpanRef(
const std::span<U>& other)
38 : value(other.data(), other.size())
42 template<std::contiguous_iterator It>
44 constexpr SpanRef(It first,
size_t count)
45 : value((T*)(&*first), count)
49 template<std::contiguous_iterator It, std::sized_sentinel_for<It> End>
51 constexpr SpanRef(It first, End last)
52 : value((T*)(&*first),
size_t(last - first))
55 template<std::ranges::contiguous_range R>
58 :
SpanRef(std::begin(range), std::end(range))
62 constexpr size_t size()
const {
return value.size(); }
64 constexpr T* data()
const {
return value.data(); }