c++ - How to make a tuple of lvalue references from a tuple of values -


there questions relate topic:

how make tuple of const references?

std::make_tuple doesn't make references

but neither discusses how make tuple of lvalue references from tuple of values.

here i've got:

template <typename... args> std::tuple<args&...> maketupleref(const std::tuple<args...>& tuple) {     return std::tie(tuple); // fails because std::tie expects list of arguments, not tuple. }  int main() {     std::tuple<int, int> tup;     std::tuple<int&, int&> tup2 = maketupleref(tup); // values of tup2 should refer in tup     return 0; } 

as far can tell std::tie ideal here because produces lvalue references, doesn't accept tuple input. how can around problem?

the usual integer_sequence trick:

template <typename... args, std::size_t... is> std::tuple<args&...> maketupleref(std::tuple<args...>& tuple, std::index_sequence<is...>) {     return std::tie(std::get<is>(tuple)...); }   template <typename... args> std::tuple<args&...> maketupleref(std::tuple<args...>& tuple) {     return maketupleref(tuple, std::make_index_sequence<sizeof...(args)>()); } 

there's simpler alternative if types in tuple known unique:

template <typename... args> std::tuple<args&...> maketupleref(std::tuple<args...>& tuple) {     return std::tie(std::get<args>(tuple)...); } 

Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

jsf - How to ajax update an item in the footer of a PrimeFaces dataTable? -

django - CSRF verification failed. Request aborted. CSRF cookie not set -