Imaginons que vous ayez besoin d'appeler la méthode suivante:
std::tuple<int, int, int> foo();
En C++17, vous pouvez appeler la fonction et décompresser le tuple dans une seule ligne:
auto [a, b, c] = foo();
Maintenant, comment puis-je procéder pour stocker uniquement b
et c
et à jeter a
?
Actuellement, je ne suis au courant de deux options:
1 - je peux utiliser une variable muette lorsque l'auto-déballage
Toutefois, la variable muette sera utilisé et il émet un avertissement, donc si je veux le silence que l'avertissement, le code sera assez désagréable à voir:
#pragma warning(push)
#pragma warning(disable:4101)
// ReSharper disable once CppDeclaratorNeverUsed
auto [_, b, c] = foo();
#pragma warning(pop)
2 - je peux stocker tout n-uplet et utiliser std::get
pour récupérer la référence à l'seules les variables dont j'ai besoin. Le code est moins désagréable, mais la syntaxe est aussi moins simple.
En outre, ce code de l'augmentation de la taille par une ligne pour chaque nouvelle valeur que nous voulons garder dans le tuple.
auto tuple = foo();
int b = std::get<1>(tuple);
int c = std::get<2>(tuple);
Est-il une autre et plus méthode simple pour décompresser à seulement quelques paramètres dans un tuple?