Namespaces
Variants

std::ranges:: ssize

From cppreference.net
Ranges library
Range adaptors
Défini dans l'en-tête <ranges>
Défini dans l'en-tête <iterator>
inline namespace /* unspecified */ {

inline constexpr /* unspecified */ ssize = /* unspecified */ ;

}
(depuis C++20)
(objet de point de personnalisation)
Signature d'appel
template < class T >

requires /* voir ci-dessous */

constexpr auto ssize ( T && t ) ;
(depuis C++20)

Calcule le nombre d'éléments dans t en temps constant, et convertit le résultat en un type signé.

Étant donné la sous-expression dont t désigne l'objet résultat (éventuellement matérialisé ) comme E :

Table des matières

Objets de point de personnalisation

Le nom ranges::ssize désigne un objet de point de personnalisation , qui est un objet fonction const d'un type de classe littéral semiregular . Voir CustomizationPointObject pour plus de détails.

Notes

Si ranges :: ssize ( e ) est valide pour une expression e , le type de retour est un type similaire à un entier signé .

Exemple

#include <array>
#include <iostream>
#include <ranges>
#include <type_traits>
int main()
{
    std::array arr{1, 2, 3, 4, 5};
    auto s = std::ranges::ssize(arr);
    std::cout << "ranges::ssize(arr) = " << s << '\n'
              << "ranges::ssize is "
              << (std::is_signed_v<decltype(s)> ? "signed" : "unsigned")
              << '\n';
    std::cout << "reversed arr: ";
    for (--s; s >= 0; --s)
        std::cout << arr[s] << ' ';
    std::cout << "\n" "s = " << s << '\n';
}

Sortie :

ranges::ssize(arr) = 5
ranges::ssize is signed
reversed arr: 5 4 3 2 1
s = -1

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 3403 C++20 ranges::size fonctionnait pour certains types non-range mais ranges::ssize ne fonctionnait pas rendu fonctionnel

Voir aussi

retourne un entier égal à la taille d'un intervalle
(objet point de personnalisation)
spécifie qu'un intervalle connaît sa taille en temps constant
(concept)
retourne la distance entre un itérateur et un sentinelle, ou entre le début et la fin d'un intervalle
(objet fonction algorithme)
(C++17) (C++20)
retourne la taille d'un conteneur ou d'un tableau
(fonction template)