Namespaces
Variants

std::tuple_size<std::ranges::subrange>

Depuis fr.cppreference.net
 
 
Bibliothèque de séquences
Adaptateurs de séquence
 
 
Défini dans l'en-tête <ranges>
template< class I, class S, ranges::subrange_kind K >
struct tuple_size<ranges::subrange<I, S, K>>
    : std::integral_constant<std::size_t, 2> {};
(depuis C++20)

La spécialisation partielle de std::tuple_size pour std::ranges::subrange fournit un moyen à la compilation d'obtenir le nombre de composants d'une subrange, qui est toujours 2, en utilisant une syntaxe de type tuple. Elle est fournie pour le support de la liaison structurée.

Hérité de std:: integral_constant

Constantes membres

value
[static]
la valeur constante 2
(constante membre publique statique)

Fonctions membres

operator std::size_t
convertit l'objet en std:: size_t , retourne value
(fonction membre publique)
operator()
(C++14)
retourne value
(fonction membre publique)

Types membres

Type Définition
value_type std:: size_t
type std:: integral_constant < std:: size_t , value >

Exemple

#include <array>
#include <iostream>
#include <iterator>
#include <ranges>
int main()
{
    static_assert(2 == std::tuple_size_v<std::ranges::subrange<int*, int*>>);
    using array5 = std::array<int, 5>;
    static_assert(2 == std::tuple_size<std::ranges::subrange<
        array5::const_iterator, array5::const_iterator>>{});
    constexpr array5 a{1, 2, 3, 4, 5};
    std::ranges::subrange sub_a1{a};
    for (std::cout << "sub_a1: { "; int e : sub_a1)
        std::cout << e << ' ';
    std::cout << "}\n";
    std::ranges::subrange sub_a2{std::next(cbegin(a)), std::prev(cend(a))};
    const auto [first, last] = sub_a2;
    std::cout << "sub_a2 size = " << std::distance(first, last) << '\n';
    for (std::cout << "sub_a2: { "; int e : sub_a2)
        std::cout << e << ' ';
    std::cout << "}\n";
}

Sortie :

sub_a1: { 1 2 3 4 5 }
sub_a2 size = 3
sub_a2: { 2 3 4 }

Voir aussi

Structured binding (C++17) lie les noms spécifiés aux sous-objets ou éléments de tuple de l'initialiseur
(C++11)
obtient le nombre d'éléments d'un type de type tuple
(modèle de classe)
obtient la taille d'un

tuple
(spécialisation de modèle de classe)

obtient la taille d'une pair
(spécialisation de modèle de classe)
obtient la taille d'un array
(spécialisation de modèle de classe)
obtient le type de l'itérateur ou du sentinelle d'un std::ranges::subrange
(spécialisation de modèle de classe)