How to convert std::array to std::tuple? [duplicate] How to convert std::array to std::tuple? [duplicate] arrays arrays

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.