在学习std::bind源码时遇到make_index_sequence,没有找到源码。
在网上搜了一下,自己实现了一个。通过递归实现如下:
template <class T, size_t NewValue>
struct append_new_index;
template <size_t... _Vals, size_t NewValue>
struct append_new_index<std::index_sequence<_Vals...>, NewValue>
{
using Type = std::index_sequence<_Vals..., NewValue>;
};
template <size_t _Size>
struct my_make_index_sequence
{
using Type = typename append_new_index< typename my_make_index_sequence<_Size - 1>::Type, _Size-1>::Type;
};
template <>
struct my_make_index_sequence<0>
{
using Type = std::index_sequence<>;
};
std::tuple的打印也有index_sequence的实际应用
参考:https://www.cnblogs.com/5iedu/p/7858378.html