std:: get (std::tuple)
|
Défini dans l'en-tête
<tuple>
|
||
|
template
<
std::
size_t
I,
class
...
Types
>
typename
std::
tuple_element
<
I,
std::
tuple
<
Types...
>>
::
type
&
|
(1) |
(depuis C++11)
(constexpr depuis C++14) |
|
template
<
std::
size_t
I,
class
...
Types
>
typename
std::
tuple_element
<
I,
std::
tuple
<
Types...
>>
::
type
&&
|
(2) |
(depuis C++11)
(constexpr depuis C++14) |
|
template
<
std::
size_t
I,
class
...
Types
>
const
typename
std::
tuple_element
<
I,
std::
tuple
<
Types...
>>
::
type
&
|
(3) |
(depuis C++11)
(constexpr depuis C++14) |
|
template
<
std::
size_t
I,
class
...
Types
>
const
typename
std::
tuple_element
<
I,
std::
tuple
<
Types...
>>
::
type
&&
|
(4) |
(depuis C++11)
(constexpr depuis C++14) |
|
template
<
class
T,
class
...
Types
>
constexpr T & get ( std:: tuple < Types... > & t ) noexcept ; |
(5) | (depuis C++14) |
|
template
<
class
T,
class
...
Types
>
constexpr T && get ( std:: tuple < Types... > && t ) noexcept ; |
(6) | (depuis C++14) |
|
template
<
class
T,
class
...
Types
>
constexpr const T & get ( const std:: tuple < Types... > & t ) noexcept ; |
(7) | (depuis C++14) |
|
template
<
class
T,
class
...
Types
>
constexpr const T && get ( const std:: tuple < Types... > && t ) noexcept ; |
(8) | (depuis C++14) |
[
0
,
sizeof...
(
Types
)
)
.
T
. Échoue à la compilation sauf si le tuple contient exactement un élément de ce type.
Table des matières |
Paramètres
| t | - | tuple dont il faut extraire le contenu |
Valeur de retour
Une référence à l'élément sélectionné de t .
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_tuples_by_type
|
201304L
|
(C++14) | Accès aux tuples par type ( 5-8 ) |
Exemple
#include <cassert> #include <iostream> #include <string> #include <tuple> int main() { auto x = std::make_tuple(1, "Foo", 3.14); // Accès par index std::cout << "( " << std::get<0>(x) << ", " << std::get<1>(x) << ", " << std::get<2>(x) << " )\n"; // Accès par type (depuis C++14) std::cout << "( " << std::get<int>(x) << ", " << std::get<const char*>(x) << ", " << std::get<double>(x) << " )\n"; const std::tuple<int, const int, double, double> y(1, 2, 6.9, 9.6); const int& i1 = std::get<int>(y); // OK : non ambigu assert(i1 == 1); const int& i2 = std::get<const int>(y); // OK : non ambigu assert(i2 == 2); // const double& d = std::get<double>(y); // Erreur : mal formé (ambigu) // Note : std::tie et la décomposition structurelle peuvent être // utilisés pour déballer un tuple en objets individuels. }
Sortie :
( 1, Foo, 3.14 ) ( 1, Foo, 3.14 )
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 2485 |
C++11 (par index)
C++14 (par type) |
il n'y a pas de surcharges pour const tuple && | ces surcharges ont été ajoutées ( ( 4 ) et ( 8 ) ) |
Voir aussi
|
(C++11)
|
accède à un élément d'un
array
(modèle de fonction) |
|
(C++11)
|
accède à un élément d'une
pair
(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++20)
|
obtient un itérateur ou un sentinelle d'un
std::ranges::subrange
(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) |
|
(C++11)
|
crée un
tuple
de références de lvalue ou décompose un tuple en objets individuels
(modèle de fonction) |
| Structured binding (C++17) | lie les noms spécifiés aux sous-objets ou éléments de tuple de l'initialiseur |