С++ 11 кортежей хороши, но у них есть два худших недостатка, доступ к членам по индексу
- нечитаемый
- difficilt для поддержания (если я добавлю элемент в середине кортежа, я прикручен)
В сущности, я хочу достичь этого
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;
Нечто похожее (тип tagging) реализуется в boost :: property_map, но я не понимаю, как реализовать его в кортеже с арбированным числом элементов
PS Пожалуйста, не предлагайте определение перечисления с помощью индексов элементов кортежа.
UPD ОК, вот мотивация. В моих проектах мне нужно иметь возможность определять множество разных кортежей "на лету", и все они должны иметь определенные общие функции и операторы. Это невозможно достичь с помощью структур
UPD2 На самом деле мой пример, вероятно, немного нереалистичен для реализации. Как насчет этого?
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;