Namespaces
Variants

std::ranges::iota_view<W, Bound>:: size

From cppreference.net
Ranges library
Range adaptors
constexpr auto size ( ) const

requiere ( std:: same_as < W, Bound > && /*advanceable*/ < W > ) ||
( /*is-integer-like*/ < W > && /*is-integer-like*/ < Bound > ) ||

std:: sized_sentinel_for < Bound, W > ;
(desde C++20)

Devuelve el tamaño de la vista si la vista está acotada.

Para las definiciones de /*advanceable*/ y /*is-integer-like*/ , consulte advanceable y is-integer-like respectivamente.

Contenidos

Valor de retorno

Si alguno de W y Bound no es un tipo similar a entero , retorna to-unsigned-like  ( bound_ - value_  ) .

De lo contrario, retorna ( value_ < 0 ) ?
(
( bound_ < 0 ) ?
to-unsigned-like  ( - value_  ) - to-unsigned-like  ( - bound_  ) :
to-unsigned-like  ( bound_  ) + to-unsigned-like  ( - value_  )
) :
to-unsigned-like  ( bound_  ) - to-unsigned-like  ( value_  )
.

Ejemplo

#include <cassert>
#include <ranges>
int main()
{
    unsigned initial_value{1}, bound{5};
    auto i{std::views::iota(initial_value, bound)};
    assert(i.size() == bound - initial_value and i.size() == 4);
    auto u{std::views::iota(8)};
    // assert(u.size()); // Error: size() no está presente ya que "u" es ilimitado
}

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 3610 C++20 size podría rechazar tipos integer-class aceptar si es posible

Véase también

devuelve un entero igual al tamaño de un rango
(objeto de punto de personalización)
devuelve un entero con signo igual al tamaño de un rango
(objeto de punto de personalización)