Lines Matching refs:span

14     span synopsis
35 // [views.span], class template span
37 class span;
40 inline constexpr bool ranges::enable_view<span<ElementType, Extent>> = true;
43 inline constexpr bool ranges::enable_borrowed_range<span<ElementType, Extent>> = true;
45 // [span.objectrep], views of object representation
47 span<const byte, ((Extent == dynamic_extent) ? dynamic_extent :
48 (sizeof(ElementType) * Extent))> as_bytes(span<ElementType, Extent> s) noexcept;
51 span< byte, ((Extent == dynamic_extent) ? dynamic_extent :
52 (sizeof(ElementType) * Extent))> as_writable_bytes(span<ElementType, Extent> s) noexcept;
56 class span {
71 // [span.cons], span constructors, copy, assignment, and destructor
72 constexpr span() noexcept;
74 constexpr explicit(Extent != dynamic_extent) span(It first, size_type count);
76 constexpr explicit(Extent != dynamic_extent) span(It first, End last);
78 constexpr span(type_identity_t<element_type> (&arr)[N]) noexcept;
80 constexpr span(array<value_type, N>& arr) noexcept;
82 constexpr span(const array<value_type, N>& arr) noexcept;
84 constexpr explicit(Extent != dynamic_extent) span(R&& r);
85 …constexpr explicit(extent != dynamic_extent) span(std::initializer_list<value_type> il); // Since …
86 constexpr span(const span& other) noexcept = default;
88 …constexpr explicit(Extent != dynamic_extent) span(const span<OtherElementType, OtherExtent>& s) no…
89 constexpr span& operator=(const span& other) noexcept = default;
91 // [span.sub], span subviews
93 constexpr span<element_type, Count> first() const;
95 constexpr span<element_type, Count> last() const;
97 constexpr span<element_type, see below> subspan() const;
99 constexpr span<element_type, dynamic_extent> first(size_type count) const;
100 constexpr span<element_type, dynamic_extent> last(size_type count) const;
101 …constexpr span<element_type, dynamic_extent> subspan(size_type offset, size_type count = dynamic_e…
103 // [span.obs], span observers
108 // [span.elem], span element access
115 // [span.iterators], span iterator support
127span(It, EndOrSize) -> span<remove_reference_t<iter_reference_t<_It>>>; …
129span(It, EndOrSize) -> span<remove_reference_t<iter_reference_t<It>>, maybe-static-ext<EndOrSize>>…
132 span(T (&)[N]) -> span<T, N>;
135 span(array<T, N>&) -> span<T, N>;
138 span(const array<T, N>&) -> span<const T, N>;
141 span(R&&) -> span<remove_reference_t<ranges::range_reference_t<R>>>;
152 #include <__fwd/span.h>
205 struct __is_std_span<span<_Tp, _Sz>> : true_type {};
228 class _LIBCPP_TEMPLATE_VIS span {
248 // [span.cons], span constructors, copy, assignment, and destructor
251 _LIBCPP_HIDE_FROM_ABI constexpr span() noexcept : __data_{nullptr} {}
254 _LIBCPP_HIDE_FROM_ABI constexpr explicit span(std::initializer_list<value_type> __il)
258 _Extent == __il.size(), "Size mismatch in span's constructor _Extent != __il.size().");
262 constexpr span(const span&) noexcept = default;
263 constexpr span& operator=(const span&) noexcept = default;
266 …_LIBCPP_HIDE_FROM_ABI constexpr explicit span(_It __first, size_type __count) : __data_{std::to_ad…
268 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(_Extent == __count, "size mismatch in span's constructor (iter…
272 …_LIBCPP_HIDE_FROM_ABI constexpr explicit span(_It __first, _End __last) : __data_{std::to_address(…
273 // [span.cons]/10
276 …_LIBCPP_ASSERT_VALID_INPUT_RANGE(__dist >= 0, "invalid range in span's constructor (iterator, sent…
278 …__dist == _Extent, "invalid range in span's constructor (iterator, sentinel): last - first != exte…
281 …_LIBCPP_HIDE_FROM_ABI constexpr span(type_identity_t<element_type> (&__arr)[_Extent]) noexcept : _…
284 …_LIBCPP_HIDE_FROM_ABI constexpr span(array<_OtherElementType, _Extent>& __arr) noexcept : __data_{…
288 _LIBCPP_HIDE_FROM_ABI constexpr span(const array<_OtherElementType, _Extent>& __arr) noexcept
292 _LIBCPP_HIDE_FROM_ABI constexpr explicit span(_Range&& __r) : __data_{ranges::data(__r)} {
293 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(ranges::size(__r) == _Extent, "size mismatch in span's constru…
297 _LIBCPP_HIDE_FROM_ABI constexpr span(const span<_OtherElementType, _Extent>& __other) noexcept
301 …_LIBCPP_HIDE_FROM_ABI constexpr explicit span(const span<_OtherElementType, dynamic_extent>& __oth…
303 …ALID_ELEMENT_ACCESS(_Extent == __other.size(), "size mismatch in span's constructor (other span)");
307 _LIBCPP_HIDE_FROM_ABI constexpr span<element_type, _Count> first() const noexcept {
308 static_assert(_Count <= _Extent, "span<T, N>::first<Count>(): Count out of range");
309 return span<element_type, _Count>{data(), _Count};
313 _LIBCPP_HIDE_FROM_ABI constexpr span<element_type, _Count> last() const noexcept {
314 static_assert(_Count <= _Extent, "span<T, N>::last<Count>(): Count out of range");
315 return span<element_type, _Count>{data() + size() - _Count, _Count};
318 …_LIBCPP_HIDE_FROM_ABI constexpr span<element_type, dynamic_extent> first(size_type __count) const …
319 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__count <= size(), "span<T, N>::first(count): count out of ran…
323 …_LIBCPP_HIDE_FROM_ABI constexpr span<element_type, dynamic_extent> last(size_type __count) const n…
324 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__count <= size(), "span<T, N>::last(count): count out of rang…
330 …subspan() const noexcept -> span<element_type, _Count != dynamic_extent ? _Count : _Extent - _Offs…
331 static_assert(_Offset <= _Extent, "span<T, N>::subspan<Offset, Count>(): Offset out of range");
333 "span<T, N>::subspan<Offset, Count>(): Offset + Count out of range");
335 using _ReturnType = span<element_type, _Count != dynamic_extent ? _Count : _Extent - _Offset>;
339 _LIBCPP_HIDE_FROM_ABI constexpr span<element_type, dynamic_extent>
341 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__offset <= size(), "span<T, N>::subspan(offset, count): offse…
345 … __count <= size() - __offset, "span<T, N>::subspan(offset, count): offset + count out of range");
354 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__idx < size(), "span<T, N>::operator[](index): index out of r…
361 std::__throw_out_of_range("span");
367 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(!empty(), "span<T, N>::front() on empty span");
372 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(!empty(), "span<T, N>::back() on empty span");
378 // [span.iter], span iterator support
396 …_LIBCPP_HIDE_FROM_ABI span<const byte, _Extent * sizeof(element_type)> __as_bytes() const noexcept…
397 …return span<const byte, _Extent * sizeof(element_type)>{reinterpret_cast<const byte*>(data()), siz…
400 …_LIBCPP_HIDE_FROM_ABI span<byte, _Extent * sizeof(element_type)> __as_writable_bytes() const noexc…
401 … return span<byte, _Extent * sizeof(element_type)>{reinterpret_cast<byte*>(data()), size_bytes()};
409 class _LIBCPP_TEMPLATE_VIS span<_Tp, dynamic_extent> {
429 // [span.cons], span constructors, copy, assignment, and destructor
430 _LIBCPP_HIDE_FROM_ABI constexpr span() noexcept : __data_{nullptr}, __size_{0} {}
433 _LIBCPP_HIDE_FROM_ABI constexpr span(std::initializer_list<value_type> __il)
438 constexpr span(const span&) noexcept = default;
439 constexpr span& operator=(const span&) noexcept = default;
442 _LIBCPP_HIDE_FROM_ABI constexpr span(_It __first, size_type __count)
446 _LIBCPP_HIDE_FROM_ABI constexpr span(_It __first, _End __last)
448 …_LIBCPP_ASSERT_VALID_INPUT_RANGE(__last - __first >= 0, "invalid range in span's constructor (iter…
452 _LIBCPP_HIDE_FROM_ABI constexpr span(type_identity_t<element_type> (&__arr)[_Sz]) noexcept
456 _LIBCPP_HIDE_FROM_ABI constexpr span(array<_OtherElementType, _Sz>& __arr) noexcept
461 _LIBCPP_HIDE_FROM_ABI constexpr span(const array<_OtherElementType, _Sz>& __arr) noexcept
465 …_LIBCPP_HIDE_FROM_ABI constexpr span(_Range&& __r) : __data_(ranges::data(__r)), __size_{ranges::s…
468 …_LIBCPP_HIDE_FROM_ABI constexpr span(const span<_OtherElementType, _OtherExtent>& __other) noexcept
472 _LIBCPP_HIDE_FROM_ABI constexpr span<element_type, _Count> first() const noexcept {
473 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(_Count <= size(), "span<T>::first<Count>(): Count out of range…
474 return span<element_type, _Count>{data(), _Count};
478 _LIBCPP_HIDE_FROM_ABI constexpr span<element_type, _Count> last() const noexcept {
479 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(_Count <= size(), "span<T>::last<Count>(): Count out of range"…
480 return span<element_type, _Count>{data() + size() - _Count, _Count};
483 …_LIBCPP_HIDE_FROM_ABI constexpr span<element_type, dynamic_extent> first(size_type __count) const …
484 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__count <= size(), "span<T>::first(count): count out of range"…
488 …_LIBCPP_HIDE_FROM_ABI constexpr span<element_type, dynamic_extent> last(size_type __count) const n…
489 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__count <= size(), "span<T>::last(count): count out of range");
494 _LIBCPP_HIDE_FROM_ABI constexpr span<element_type, _Count> subspan() const noexcept {
495 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(_Offset <= size(), "span<T>::subspan<Offset, Count>(): Offset …
497 … "span<T>::subspan<Offset, Count>(): Offset + Count out of range");
498 …return span<element_type, _Count>{data() + _Offset, _Count == dynamic_extent ? size() - _Offset : …
501 constexpr span<element_type, dynamic_extent> _LIBCPP_HIDE_FROM_ABI
503 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__offset <= size(), "span<T>::subspan(offset, count): offset o…
507 … __count <= size() - __offset, "span<T>::subspan(offset, count): offset + count out of range");
516 …_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__idx < size(), "span<T>::operator[](index): index out of rang…
523 std::__throw_out_of_range("span");
529 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(!empty(), "span<T>::front() on empty span");
534 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(!empty(), "span<T>::back() on empty span");
540 // [span.iter], span iterator support
558 _LIBCPP_HIDE_FROM_ABI span<const byte, dynamic_extent> __as_bytes() const noexcept {
562 _LIBCPP_HIDE_FROM_ABI span<byte, dynamic_extent> __as_writable_bytes() const noexcept {
572 inline constexpr bool ranges::enable_borrowed_range<span<_Tp, _Extent> > = true;
575 inline constexpr bool ranges::enable_view<span<_ElementType, _Extent>> = true;
579 _LIBCPP_HIDE_FROM_ABI auto as_bytes(span<_Tp, _Extent> __s) noexcept {
585 _LIBCPP_HIDE_FROM_ABI auto as_writable_bytes(span<_Tp, _Extent> __s) noexcept {
604 span(_It, _EndOrSize) -> span<remove_reference_t<iter_reference_t<_It>>, __maybe_static_ext<_EndOrS…
607 span(_It, _EndOrSize) -> span<remove_reference_t<iter_reference_t<_It>>>;
611 span(_Tp (&)[_Sz]) -> span<_Tp, _Sz>;
614 span(array<_Tp, _Sz>&) -> span<_Tp, _Sz>;
617 span(const array<_Tp, _Sz>&) -> span<const _Tp, _Sz>;
620 span(_Range&&) -> span<remove_reference_t<ranges::range_reference_t<_Range>>>;