std::tuple_size<std:ranges::subrange>
De cppreference.com
| Definido en el archivo de 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, usando una sintaxis similar a una tupla. Se proporciona para apoyo de vínculos estructurados.
Heredado de std::integral_constant
Constantes miembro
value [estático] |
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
Ejecuta este código
#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 << "tamaño de sub_a2 = " << 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 }
tamaño de sub_a2 = 3
sub_a2: { 2 3 4 }
Véase también
| Vínculo estructurado (C++17) | Vincula los nombres especificados a subobjetos o elementos de una tupla del inicializador. |
(C++11) |
Obtiene el número de elementos de un tipo similar a una tupla. (plantilla de clase) |
| Obtiene el tipo del iterador o el centinela de un subrango (std::ranges::subrange). (especialización de plantilla de clase) |