Namespaces
Variants

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

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

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

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

Retourne la taille de la vue si la vue est bornée.

Pour les définitions de /*advanceable*/ et /*is-integer-like*/ , voir advanceable et is-integer-like respectivement.

Table des matières

Valeur de retour

Si l'un des W et Bound n'est pas un type similaire à un entier , retourne to-unsigned-like  ( bound_ - value_  ) .

Sinon, retourne ( 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_  )
.

Exemple

#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()); // Erreur : size() n'est pas présent car "u" est non borné
}

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 3610 C++20 size pourrait rejeter les types integer-class accepter si possible

Voir aussi

renvoie un entier égal à la taille d'une plage
(objet point de personnalisation)
renvoie un entier signé égal à la taille d'une plage
(objet point de personnalisation)