range-based for で固定回ループ

雑に書いてみた。

コード

#include <iostream>
#include <utility>
#include <array>


template<std::size_t... Index>
std::array<std::size_t, sizeof...(Index)>
range_impl(std::index_sequence<Index...>){
    return {{ Index... }};
}

template<std::size_t N>
auto range = range_impl(std::make_index_sequence<N>{});


int
main(){
    for(auto&& i : range<10>){
        std::cout << i << std::endl;
    }
    return 0;
}

出力

0
1
2
3
4
5
6
7
8
9

定数しか渡せないあたり雑。