Namespaces
Variants

std::ranges:: ssize

From cppreference.net
Ranges library
Range adaptors
Definiert im Header <ranges>
Definiert im Header <iterator>
inline namespace /* unspecified */ {

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

}
(seit C++20)
(Anpassungspunktobjekt)
Aufrufsignatur
template < class T >

requires /* siehe unten */

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

Berechnet die Anzahl der Elemente in t in konstanter Zeit und konvertiert das Ergebnis in einen vorzeichenbehafteten Typ.

Gegeben sei der Subausdruck von dem t das (möglicherweise materialisierte ) Ergebnisobjekt als E bezeichnet:

Inhaltsverzeichnis

Customization Point Objects

Der Name ranges::ssize bezeichnet ein Customization Point Object , welches ein konstantes Funktionsobjekt eines Literal semiregular Klassentyps ist. Weitere Details finden Sie unter CustomizationPointObject .

Hinweise

Wenn ranges :: ssize ( e ) für einen Ausdruck e gültig ist, dann ist der Rückgabetyp ein signed-integer-like type .

Beispiel

#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';
}

Ausgabe:

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

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3403 C++20 ranges::size funktionierte für einige Nicht-Bereichstypen, aber ranges::ssize nicht Funktionsfähig gemacht

Siehe auch

gibt einen Integer gleich der Größe eines Ranges zurück
(Customization Point Object)
spezifiziert, dass ein Range seine Größe in konstanter Zeit kennt
(Konzept)
gibt die Distanz zwischen einem Iterator und einem Sentinel zurück, oder zwischen Anfang und Ende eines Ranges
(Algorithm Function Object)
(C++17) (C++20)
gibt die Größe eines Containers oder Arrays zurück
(Function Template)