У меня есть структура, получающая пакет параметров. Предположим, что пакет параметров никогда не будет иметь размер меньше 3. Кроме того, std::array
, найденный в структуре, должен оцениваться во время компиляции. Я хочу заполнить массив с помощью пакета параметров, но я хочу пропустить первый и последний элемент.
Это мой код:
#include <iostream>
#include <array>
#include <cstdint>
template<int32_t ...Ts>
struct St {
const std::array<int32_t, sizeof...(Ts)-2U> arr{};
};
int main() {
constexpr St<7, 2, 1, 5, 6> s;
std::cout << s.arr[2] << std::endl;
return 0;
}
В идеале, я бы хотел используйте std::index_sequence
с элементами из [1, sizeof_parameter_pack - 1] или [0, size_of_parameter_pack - 2] и выражением сгиба для заполнения массива. Тем не менее, я борюсь с созданием index_sequence. Я не хочу, чтобы структура получила другой параметр шаблона. Как мне этого добиться?