std:: dynamic_extent
From cppreference.net
|
Definido en el encabezado
<span>
|
||
|
inline
constexpr
std::
size_t
dynamic_extent
=
std::
numeric_limits
<
std::
size_t
>
::
max
(
)
;
|
(desde C++20) | |
std::dynamic_extent
es una constante de tipo
std::size_t
que generalmente se utiliza para indicar que cualquier tipo que use
std::dynamic_extent
almacenará su valor (por ejemplo, el tamaño)
dinámicamente
en lugar de tener el valor
estáticamente
definido en el tipo.
Se está utilizando en varios contextos:
- Para diferenciar std::span de extensión estática y dinámica.
|
(desde C++23) |
|
(since C++26) |
Nota
Dado que std::size_t es un tipo sin signo, una definición equivalente es:
inline constexpr std::size_t dynamic_extent = -1;
Ver conversiones integrales .
Ejemplo
Ejecutar este código
#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); }
Salida:
span1, static extent = 5 span2, dynamic extent span3, static extent = 5 span4, dynamic extent
Véase también
|
(C++20)
|
una vista no propietaria sobre una secuencia contigua de objetos
(plantilla de clase) |
|
(C++23)
|
un descriptor de un espacio de índices multidimensional de cierto rango
(plantilla de clase) |