std::ranges::get(std::ranges::subrange)
Depuis fr.cppreference.net
| Défini dans l'en-tête <ranges>
|
||
template< std::size_t N, class I, class S, ranges::subrange_kind K >
requires ((N == 0 && std::copyable<I>) || N == 1)
constexpr auto get( const ranges::subrange<I, S, K>& r );
|
(1) | (depuis C++20) |
template< std::size_t N, class I, class S, ranges::subrange_kind K >
requires (N < 2)
constexpr auto get( ranges::subrange<I, S, K>&& r );
|
(2) | (depuis C++20) |
namespace std { using ranges::get; }
|
(3) | (depuis C++20) |
Fournit le support de la liaison structurée.
1) Obtient l'itérateur ou la sentinelle à partir d'une
subrange valeur lvalue (ou d'une rvalue const) lorsque N == 0 ou N == 1, respectivement.2) Identique à (1), sauf qu'elle prend une
subrange rvalue non-const.3) Les surcharges (1,2) sont importées dans l'espace de noms
std, ce qui simplifie leur utilisation et fait de chaque subrange avec un itérateur copiable un type pair-like.Paramètres
| r | - |
a
subrange
|
Valeur de retour
1,2)
Si
N
est
0
, retourne
r.
begin
(
)
. Sinon (
N
est
1
), retourne
r.
end
(
)
.
Exemple
Exécuter ce code
#include <array> #include <iostream> #include <iterator> #include <ranges> int main() { std::array a{1, -2, 3, -4}; std::ranges::subrange sub_a{std::next(a.begin()), std::prev(a.end())}; std::cout << *std::ranges::get<0>(sub_a) << ' ' // == *(begin(a) + 1) << *std::ranges::get<1>(sub_a) << '\n'; // == *(end(a) - 1) *std::get<0>(sub_a) = 42; // OK // *std::get<2>(sub_a) = 13; // Error: index can only be 0 or 1 }
Sortie :
-2 -4
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 3589 | C++20 |
la surcharge
(
1
)
copie
begin_
si
N
est
0
, mais
I
pourrait ne pas modéliser
copyable
|
contraintes ajoutées |
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)
|
accède à l'élément spécifié du tuple
(modèle de fonction) |
|
(C++11)
|
accède à un élément d'une
pair
(modèle de fonction) |
|
(C++11)
|
accède à un élément d'un
array
(modèle de fonction) |
|
(C++17)
|
lit la valeur du variant donné l'index ou le type (si le type est unique), lance une exception en cas d'erreur
(modèle de fonction) |
|
(C++26)
|
obtient une référence à la partie réelle ou imaginaire d'un
std::complex
(modèle de fonction) |