Por que ninguém parece usar tuplas em C ++, nem a Boost Tuple Library ou a biblioteca padrão para TR1? Eu li muito código C ++ e, muito raramente, vejo o uso de tuplas, mas muitas vezes vejo muitos lugares em que as tuplas resolveriam muitos problemas (geralmente retornando vários valores das funções).
As tuplas permitem que você faça todos os tipos de coisas legais como esta:
tie(a,b) = make_tuple(b,a); //swap a and b
Isso é certamente melhor que isso:
temp=a;
a=b;
b=temp;
Claro que você sempre pode fazer isso:
swap(a,b);
Mas e se você quiser girar três valores? Você pode fazer isso com tuplas:
tie(a,b,c) = make_tuple(b,c,a);
As tuplas também facilitam muito o retorno de várias variáveis de uma função, o que provavelmente é um caso muito mais comum do que trocar valores. Usar referências para retornar valores certamente não é muito elegante.
Existem grandes desvantagens nas tuplas em que não estou pensando? Caso contrário, por que eles raramente são usados? Eles são mais lentos? Ou será que as pessoas não estão acostumadas com elas? É uma boa ideia usar tuplas?
a = a ^ b; b = a ^ b; a = a ^ b;