Предполагая, что это не совсем то, что вы имели в виду, но вы можете написать что-то вроде:
template <typename T, size_t... I>
auto helper(T&& rng, std::index_sequence<I...>) {
return std::make_tuple(rng[I]...);
}
int main() {
std::vector v{1,2,3,4,5};
for (auto&& t : v | ranges::view::sliding(3)) {
auto&& [first, second, third] = helper(t, std::make_index_sequence<3>{});
std::cout << first << ", " << second << ", " << third << std::endl;
}
}
В противном случае, я не знаю, как сделать размером во время компиляции диапазоны.