Предположим, у меня есть кортежРаспаковка std tuple в указатели?
std::tuple<A, B, C> myFavoriteTuple;
я могу это сделать:
A a;
B b;
C c;
std::tie(a, b, c) = myFavoriteTuple
Но если некоторые из этих кортежей действительно дорого, чтобы скопировать, что я бы очень хотел, чтобы получить ссылку или указатель на правильные пятна в моем кортеже. Я могу это сделать:
A* a = &std::get<0>(myFavoriteTuple);
B* b = &std::get<1>(myFavoriteTuple);
C* c = &std::get<2>(myFavoriteTuple);
Но это кажется настолько хромает по сравнению с тем, как удивительный синтаксис tie
есть. Есть ли другой способ получить указатели/ссылки на компоненты кортежа?
Просмотреть Boost.Fusion –
Перемещение из кортежа может быть лучшей идеей в некоторых случаях - 'std :: tie (a, b, c) = std :: move (myFavoriteTuple);' – zch
О, человек, C++ 17 отлично: 'auto && [a, b, c] = myFavoriteTuple;' done. – Barry