C ++ 11 tuple etiquetado

Las tuplas de C ++ 11 son agradables, pero tienen dos desventajas de hude para mí, el acceso a los miembros por índice es

ilegibleDifícil de mantener (si agrego un elemento en el medio de la tupla, estoy atornillado)

En esencia lo que quiero lograr es esto.

tagged_tuple <name, std::string, age, int, email, std::string> get_record (); {/*...*/}
// And then soomewhere else

std::cout << "Age: " << get_record().get <age> () << std::endl;

Algo similar (etiquetado de tipo) se implementa en boost :: property_map, pero no puedo entender cómo implementarlo en una tupla con un número arbitrario de elementos.

PS Por favor, hazno Sugiero definir una enumeración con elementos de tupla indecies.

UPD OK, aquí hay una motivación. En mis proyectos necesito poder definir muchas tuplas diferentes 'sobre la marcha' y todas ellas deben tener ciertas funciones y operadores comunes. Esto no es posible lograr con estructuras.

UPD2 En realidad, mi ejemplo es probablemente poco realista de implementar. ¿Qué tal esto?

tagged_tuple <tag<name, std::string>, tag<age, int>, tag<email, std::string>> get_record (); {/*...*/}
// And then soomewhere else

std::cout << "Age: " << get_record().get <age> () << std::endl;

Respuestas a la pregunta(8)

Su respuesta a la pregunta