你定义的方式index_range
(在编辑问题之前)答案很简单:
template<std::size_t Min, std::size_t Max>
using make_index_range = index_range<Min, Max>;
这不是很有用。
所以我假设你的意思是make_index_range<5, 9>
会给index_sequence<5, 6, 7, 8>
,可以这样完成:
#include <utility>
template<std::size_t N, std::size_t... Seq>
constexpr std::index_sequence<N + Seq ...>
add(std::index_sequence<Seq...>)
{ return {}; }
template<std::size_t Min, std::size_t Max>
using make_index_range = decltype(add<Min>(make_index_sequence<Max-Min>()));
或者如果你想要make_index_range
作为类模板,定义add
如上所述,然后:
template<std::size_t Min, std::size_t Max>
struct make_index_range {
using type = decltype(add<Min>(make_index_sequence<Max-Min>()));
};
(但是有了这个你必须使用make_index_range<5, 9>::type
所以别名模板可能更好,并且更接近如何make_index_sequence
works.)