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  used
       to differentiate
	  std::span of static and dynamic extent.

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 (ex == std::dynamic_extent) {
		    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)

http://cppreference.com		  2022.07.31		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.0>

home | help