Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::span::span(3)	      C++ Standard Libary	    std::span::span(3)

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

Synopsis
	  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  ele-
       ment_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  ele-
       ment_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 re-
       sulting span has
	  size() == N and data() == std::data(arr).

	    * These overloads participate in overload resolution only  if  ex-
       tent ==
	      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 re-
       sulting span has
	  size()     ==	    std::ranges::size(range)	 and	 data()	    ==
       std::ranges::data(range).

	    *  The behavior is undefined if R does not actually	model contigu-
       ous_range and
	      sized_range or if	R does not  model  borrowed_range  while  ele-
       ment_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().

Parameters
	  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

Exceptions
	  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.

See also
	  data	    returns a pointer to the beginning of the sequence of ele-
       ments
		    (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)

http://cppreference.com		  2022.07.31		    std::span::span(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::span::span&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help