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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::dynamic_extent - std::dynamic_extent

Synopsis
	  Defined in header <span>
	  inline       constexpr       std::size_t	 dynamic_extent	     =
       (since C++20)
	  std::numeric_limits<std::size_t>::max();

	  std::dynamic_extent is a constant of type std::size_t	that is	gener-
       ally used to
	  indicate that	any type using	std::dynamic_extent  will  dynamically
       store its value
	  (e.g.,  size)	 rather	 than having the value statically known	in the
       type.

	  It is	being used in several contexts:

	    * To differentiate std::span of static and dynamic extent.

	    * To indicate that the extent at a	certain	 rank  index  will  be
       stored (since C++23)
	      dynamically in std::extents.

	    *  To  indicate  that  the	padded	layouts	 for  std::mdspan will
       (since C++26)
	      dynamically store	its padding value.

Note
	  Since	std::size_t is an unsigned type, an equivalent definition is:

	inline constexpr std::size_t dynamic_extent = -1;

	  See integral conversions.

Example
       // Run this code

	#include <array>
	#include <cassert>
	#include <cstddef>
	#include <iostream>
	#include <span>
	#include <string_view>
	#include <vector>

	int main()
	{
	    auto print = [](std::string_view const name, std::size_t ex)
	    {
		std::cout << name << ",	";
		if (std::dynamic_extent	== ex)
		    std::cout << "dynamic extent\n";
		else
		    std::cout << "static extent	= " << ex << '\n';
	    };

	    int	a[]{1, 2, 3, 4,	5};

	    std::span span1{a};
	    print("span1", span1.extent);

	    std::span<int, std::dynamic_extent>	span2{a};
	    print("span2", span2.extent);

	    std::array ar{1, 2,	3, 4, 5};
	    std::span span3{ar};
	    print("span3", span3.extent);

	    std::vector	v{1, 2,	3, 4, 5};
	    std::span span4{v};
	    print("span4", span4.extent);
	}

Output:
	span1, static extent = 5
	span2, dynamic extent
	span3, static extent = 5
	span4, dynamic extent

See also
	  span	  a non-owning view over a contiguous sequence of objects
	  (C++20) (class template)
	  extents a descriptor of a multidimensional index space of some rank
	  (C++23) (class template)

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

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

home | help