Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
Definido en el encabezado <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 > { } ;
(desde C++20)

La especialización parcial de std::tuple_size para std::ranges::subrange proporciona una forma en tiempo de compilación de obtener el número de componentes de un subrange , que siempre es 2, utilizando sintaxis tipo tupla. Se proporciona para dar soporte a enlace estructurado.

Contenidos

Heredado de std:: integral_constant

Constantes miembro

value
[static]
el valor constante 2
(constante miembro pública estática)

Funciones miembro

operator std::size_t
convierte el objeto a std:: size_t , devuelve value
(función miembro pública)
operator()
(C++14)
devuelve value
(función miembro pública)

Tipos miembro

Tipo Definición
value_type std:: size_t
type std:: integral_constant < std:: size_t , value >

Ejemplo

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

Salida:

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

Véase también

Structured binding (C++17) enlaza los nombres especificados a subobjetos o elementos de tupla del inicializador
(C++11)
obtiene el número de elementos de un tipo similar a tupla
(plantilla de clase)
obtiene el tamaño de

un tuple
(especialización de plantilla de clase)

obtiene el tamaño de un pair
(especialización de plantilla de clase)
obtiene el tamaño de un array
(especialización de plantilla de clase)
obtiene el tipo del iterador o el centinela de un std::ranges::subrange
(especialización de plantilla de clase)