问std::make_integer_sequence究竟是如何实现的?EN目前,没有一个主要的编译器标准库提供N3658编译时整...
template<size_t.. Ints>usingindex_sequence = std::integer_sequence<size_t,Ints...>; 通常我们不会直接使用std::integer_sequence,而是通过定义一个size_t的std::integer_sequnece命名为index_sequence。 2.3 std::make_index_sequence 这里就是生成了一组数字序列0,1,2,3...N - 1的一组std::index...
template<size_t..Ints>using index_sequence=std::integer_sequence<size_t,Ints...>; 通常我们不会直接使用std::integer_sequence,而是通过定义一个size_t的std::integer_sequnece命名为index_sequence。 2.3 std::make_index_sequence 这里就是生成了一组数字序列0,1,2,3...N - 1的一组std::index_se...
integers> struct make_integer_sequence_helper<T, N, N, integers...> { using type = std::integer_sequence<T, integers...>; }; } template<class T, T N> using make_integer_sequence = detail::make_integer_sequence_helper<T, 0, N>::type;...
using index_sequence_for = std::make_index_sequence<sizeof...(T)>; 下面的代码演示了使用std::integer_sequence创建一个含有元素0, 1, 2, 3, …, 9的vector。通过第13行的模板参数10,推导出第5行的模板参数组为0, 1, 2, 3, …, 9。
C++14在标准库里添加了一个很有意思的元函数: std::integer_sequence。并且通过它衍生出了一系列的帮助模板: std::make_integer_sequence, std::make_index_sequence, std:: index_sequence_for。在新的黑魔法的加持下,它可以帮助我们完成在编译期间获取了一组编译期整数的工作。
这里,std::size_t N是一个模板参数,表示生成的序列的大小。std::make_integer_sequence是一个模板,它生成一个包含从0到N-1的整数序列的类型。std::index_sequence_for则是一个模板别名,它根据给定的类型生成一个std::index_sequence。 在实际编程中,我们通常使用std::make_index_sequence来生成一个索引序列,然...
using make_integer_sequence = std::integer_sequence<T, /* a sequence 0, 1, 2, ..., N-1 */ >; template<std::size_t N> using make_index_sequence = std::make_integer_sequence<std::size_t, N>;若N 为负则程序为谬构。若 N 为零,则指示类型为 integer_sequence<T>。 定义辅助类...
typename Tup> auto my_apply(T&& obj, Tup&& tup) { make_sequence<std::tuple_size_v<std...
注意:由于std::integer_sequence是一个模板类,它通常不会直接实例化,而是作为其他模板类(如std::index_sequence)的底层实现。上面的示例仅用于展示如何引用std::integer_sequence,但在实际使用中,你可能需要使用像std::make_index_sequence这样的工具来生成std::integer_sequence的实例。考虑...