У меня есть класс, который получает целочисленный пакет параметров [a,b,...,y,z]
.Мне нужно расширить его на две пачки [a,...,y]
и [b,...,z]
- то есть удалить один раз первый и один раз последний.Предполагается, что конечным продуктом будет набор 2-мерных массивов размером [a,b]
, [b,c]
и т. Д. До [x,y]
, [y,z]
.Я пытаюсь использовать что-то вроде этого:
std::tuple< std::array< std::array< int, /*RemoveFirst*/Ints>, /*RemoveLast*/Ints>...>
Я тоже открыт для других решений.
Пример:
template <int... Ints>
struct S {
std::tuple< std::array< std::array< int, /*RemoveFirst*/Ints>, /*RemoveLast*/Ints>...> t;
};
int main() {
S<2,3,4> a;
std::get<0>(a.t)[0][0] = 42;
// explenation:
// a.t is tuple<array<array<int,3>,2>,array<array<int,4>,3>>
// get<0>(a.t) is array<array<int,3>,2>
// get<0>(a.t)[0] is array<int,3>
// get<0>(a.t)[0][0] is int
}