Pourquoi personne ne semble utiliser les tuples en C++, que ce soit les Bibliothèque Boost Tuple ou la bibliothèque standard de TR1 ? J'ai lu beaucoup de code C++, et je ne vois que très rarement l'utilisation de tuples, mais je vois souvent beaucoup d'endroits où les tuples résoudraient de nombreux problèmes (généralement le retour de valeurs multiples à partir de fonctions).
Les tuples vous permettent de faire toutes sortes de choses sympas comme celles-ci :
tie(a,b) = make_tuple(b,a); //swap a and b
C'est certainement mieux que ça :
temp=a;
a=b;
b=temp;
Bien sûr, vous pouvez toujours faire ça :
swap(a,b);
Mais que faire si vous voulez faire pivoter trois valeurs ? Vous pouvez le faire avec des tuples :
tie(a,b,c) = make_tuple(b,c,a);
Les tuples facilitent également le retour de plusieurs variables à partir d'une fonction, ce qui est probablement un cas beaucoup plus courant que l'échange de valeurs. L'utilisation de références pour retourner les valeurs n'est certainement pas très élégante.
Y a-t-il des inconvénients majeurs aux tuples auxquels je ne pense pas ? Si non, pourquoi sont-ils rarement utilisés ? Sont-ils plus lents ? Ou est-ce simplement parce que les gens ne sont pas habitués à les utiliser ? Est-ce une bonne idée d'utiliser les tuples ?