std::tuple_size<std::ranges::subrange>
Depuis fr.cppreference.net
| 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
Exécuter ce code
#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) |
|
(C++11)
|
obtient la taille d'un
|
|
(C++11)
|
obtient la taille d'une
pair
(spécialisation de modèle de classe) |
|
(C++11)
|
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) |