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

NAME
     std::extents::extents - std::extents::extents

Synopsis
	constexpr  extents()  = default;				     (1)
     (since C++23)
	template< class OtherIndexType, std::size_t... OtherExtents >

	constexpr explicit(/*see  below*/)				     (2)
     (since C++23)

	    extents( const std::extents<OtherIndexType, OtherExtents...>&
	other ) noexcept;
	template<  class...  OtherIndexTypes >				     (3)
     (since C++23)
	constexpr explicit extents( OtherIndexTypes... exts ) noexcept;
	template< class OtherIndexType, std::size_t N >

	constexpr explicit(N !=  rank_dynamic())			     (4)
     (since C++23)

	    extents( std::span<OtherIndexType, N> exts ) noexcept;
	template< class OtherIndexType, std::size_t N >

	constexpr  explicit(N  != rank_dynamic())			     (5)
     (since C++23)

	    extents( const std::array<OtherIndexType, N>& exts ) noexcept;

	Construct an extents. One can construct extents from  just  dynamic  ex-
     tents, which are
	all  the values getting stored, or from all the extents with a precondi-
     tion.

	1) Default constructor. Initializes all dynamic extents to zero.
	2) Conversion from another extents object. After construction, *this  ==
     other is
	true.
	  * The behavior is undefined if

	  *  other.extent(r)  != static_extent(r) for any r for which static_ex-
     tent(r)
	    represents a static extent, or
	  * other.extent(r) is not representable as a value  of  type  IndexType
     for any rank
	    value r in other.
	  * This overload participates in overload resolution only if

	  * sizeof...(OtherExtents) == rank() is true, and
	  * ((OtherExtents == std::dynamic_extent || Extents == std::dynamic_ex-
     tent ||
	      OtherExtents == Extents) && ...) is true.
	  * This constructor is explicit if

	  * ((Extents != std::dynamic_extent && OtherExtents == std::dynamic_ex-
     tent) || ...)
	    is true, or
	  * std::numeric_limits<IndexType>::max() <
	    std::numeric_limits<OtherIndexType>::max() is true.
	3) Let N be sizeof...(exts) and exts_arr be std::array<IndexType,
	N>{static_cast<IndexType>(std::move(exts))...},    equivalent	to   ex-
     tents(exts_arr).
	  * This overload participates in overload resolution only if

	  * (std::is_convertible_v<OtherIndexTypes, IndexType> && ...) is true,
	  * (std::is_nothrow_constructible_v<IndexType, OtherIndexTypes> && ...)
     is true,
	    and
	  * N == rank_dynamic() || N == rank() is true.
	  * The behavior is undefined if

	  * N != rank_dynamic() and exts_arr[r] is not equal to static_extent(r)
     for any r
	    for which static_extent(r) represents a static extent, or
	  * an element in exts is negative or not representable as  a  value  of
     type
	    IndexType.
	4,5) If N equals rank_dynamic(), for all d in [0, rank_dynamic()),
	direct-non-list-initializes	       dynamic-extents[d]	    with
     std::as_const(exts[d]).
	Otherwise, for all d in [0, rank_dynamic()), direct-non-list-initializes
	dynamic-extents[d] with std::as_const(exts[dynamic-index-inv(d)]).
	  * This overload participates in overload resolution only if

	  * std::is_convertible_v<const OtherIndexType&, IndexType> is true,
	  * std::is_nothrow_constructible_v<IndexType, const OtherIndexType&> is
     true, and
	  * N == rank_dynamic() || N == rank() is true.
	  * The behavior is undefined if

	  * N != rank_dynamic() and exts[r] is not equal to static_extent(r) for
     any r for
	    which static_extent(r) represents a static extent, or
	  * exts[r] is negative or not representable as a value of  type  Index-
     Type for any
	    rank index r.

Parameters
	other - another extents to convert from
	exts  - represents the extents

Example
	 This section is incomplete
	 Reason: no example

See also
	 This section is incomplete

Categories:
	  * Todo no example
	  * Todo without reason

http://cppreference.com 	   2024.06.10		std::extents::extents(3)

home | help