How to convert std::array to std::tuple? [duplicate]
If your implementation supports it, you can use std::tuple_cat
. Under some implementations it concatenates any number of objects that respect the tuple interface (which std::array
does) into a single flat tuple. Concatenating a single tuple like object will just produce a tuple that holds copies of the members of said source "tuple".
std::array<void*, N> a;auto b = std::tuple_cat(a);
Also, just in case - am I right that the layout of
std::array
is a dense set of respective objects, thus equal to, lets say,void**
of respective length, whereas the layout of tuple allows gaps?
A std::array
is an aggregate the will hold a void*[N]
internally. So yes, the elements will be without padding in between them. The layout of the tuple's elements is not specified to such an extent.