Ответ 1
Если ваша реализация поддерживает это, вы можете использовать std::tuple_cat
. В некоторых реализациях он объединяет любое количество объектов, которые относятся к интерфейсу кортежа (что делает std::array
), в один плоский кортеж. Конкатенация одного объекта, подобного кортежу, просто создаст кортеж, содержащий копии членов указанного исходного кортежа.
std::array<void*, N> a;
auto b = std::tuple_cat(a);
Кроме того, на всякий случай - я прав, что компоновка
std::array
представляет собой плотный набор соответствующих объектов, таким образом, равный, скажем,void**
соответствующей длины, тогда как компоновка кортежа допускает пробелы?
std::array
- это совокупность, которая будет содержать void*[N]
внутри. Так что да, элементы будут без отступов между ними. Компоновка элементов кортежа не указана в такой степени.