今までは以下のように作っていましたが、
template<std::size_t... Indeces> constexpr auto make_iota_impl( std::index_sequence<Indeces...> ) { return std::array { Indeces... }; } template<std::size_t N> constexpr auto make_iota() { return make_iota_impl( std::make_index_sequence<N>() ); }
C++20ではstd::iota
がconstexpr
対応したので、
template<std::size_t N> constexpr auto make_iota() { std::array<int, N> ret; std::iota(ret.begin(), ret.end(), 0); return ret; }
と書けるようになりました。