Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
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'un subrange , qui est toujours 2, en utilisant la syntaxe de type tuple. Elle est fournie pour la prise en charge de la liaison structurée.

Table des matières

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)