GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::span::span(3) C++ Standard Libary std::span::span(3)

std::span::span - std::span::span


constexpr span() noexcept; (1)
template< class It >


explicit(extent != std::dynamic_extent) (2)


constexpr span( It first, size_type count );
template< class It, class End >


explicit(extent != std::dynamic_extent) (3)


constexpr span( It first, End last );
template< std::size_t N > (4)
constexpr span( element_type (&arr)[N] ) noexcept;
template< class U, std::size_t N > (5)
constexpr span( std::array<U, N>& arr ) noexcept;
template< class U, std::size_t N > (6)
constexpr span( const std::array<U, N>& arr ) noexcept;
template< class R >


explicit(extent != std::dynamic_extent) (7)


constexpr span( R&& range );
template< class U, std::size_t N >


explicit(extent != std::dynamic_extent && N == std::dynamic_extent) (8)


constexpr span( const std::span<U, N>& source ) noexcept;
constexpr span( const span& other ) noexcept = default; (9)


Constructs a span.


1) Constructs an empty span whose data() == nullptr and size() == 0.


* This overload participates in overload resolution only if extent == 0 || extent
== std::dynamic_extent.


2) Constructs a span that is a view over the range [first, first + count); the
resulting span has data() == std::to_address(first) and size() == count.


* The behavior is undefined if [first, first + count) is not a valid range, if It
does not actually model contiguous_iterator, or if extent != std::dynamic_extent
&& count != extent.
* This overload participates in overload resolution only if


* It satisfies contiguous_iterator
* the conversion from std::iter_reference_t<It> to element_type is at
most a qualification conversion.


3) Constructs a span that is a view over the range [first, last); the resulting span
has data() == std::to_address(first) and size() == last-first.


* The behavior is undefined if [first, last) is not a valid range, if It does not
actually model contiguous_iterator, if End does not actually model
sized_sentinel_for for It, or if extent != std::dynamic_extent && last-first !=
extent.
* This overload participates in overload resolution only if


* It satisfies contiguous_iterator,
* End satisfies sized_sentinel_for for It,
* the conversion from std::iter_reference_t<It> to element_type is at
most a qualification conversion, and
* std::is_convertible_v<End, std::size_t> is false.


4-6) Constructs a span that is a view over the array arr; the resulting span has
size() == N and data() == std::data(arr).


* These overloads participate in overload resolution only if extent ==
std::dynamic_extent || N == extent is true and the conversion from
std::remove_pointer_t<decltype(data(arr))> to element_type is at most a
qualification conversion. These constructor templates are never used for class
template argument deduction.


7) Constructs a span that is a view over the range range; the resulting span has
size() == std::ranges::size(range) and data() == std::ranges::data(range).


* The behavior is undefined if R does not actually model contiguous_range and
sized_range or if R does not model borrowed_range while element_type is
non-const or both extent != dynamic_extent and std::ranges::size(range) !=
extent are true.
* This overload participates in overload resolution only if


* R satisfies contiguous_range and sized_range,
* either R satisfies borrowed_range or std::is_const_v<element_type> is
true
* std::remove_cvref_t<R> is not a specialization of std::span,
* std::remove_cvref_t<R> is not a specialization of std::array
* std::is_array_v<std::remove_cvref_t<R>> is false, and
* the conversion from std::ranges::range_reference_t<R> to element_type
is at most a qualification conversion.


8) Converting constructor from another span source; the resulting span has size() ==
source.size() and data() == source.data().


* The behavior is undefined if both extent != dynamic_extent and source.size() !=
extent are true.
* This overload participates in overload resolution only if at least one of extent
== std::dynamic_extent, N == std::dynamic_extent and N == extent is true and the
conversion from U to element_type is at most a qualification conversion.


9) Defaulted copy constructor copies the size and data pointer; the resulting span
has size() == other.size() and data() == other.data().


first - iterator to the first element of the sequence
count - number of elements in the sequence
last - iterator past the last element of the sequence or another sentinel
arr - array to construct a view for
range - range to construct a view for
source - another span to convert from
other - another span to copy from


2) Throws nothing.
3) Throws what and when last - first throws.
7) Throws what and when std::ranges::size(r) and std::ranges::data(r) throw.


data returns a pointer to the beginning of the sequence of elements
(public member function)
size returns the number of elements in the sequence
(public member function)
operator= assigns a span
(public member function)
size
ssize returns the size of a container or array
(C++17) (function template)
(C++20)
data obtains the pointer to the underlying array
(C++17) (function template)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.