Namespaces
Variants

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

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rango
 
 
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 es siempre 2, utilizando una sintaxis similar a la de una tupla. Se proporciona para soporte de enlace estructurado.

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)