模板递归不会停止

Template recursion doesn't stop

本文关键字:递归      更新时间:2023-10-16

我想创建模板递归,让我使用 make_sequence<4 创建序列<0,1,2,3,4>>但似乎递归并没有停止专业化,只是继续运行直到 stackoverfolw。

#include <iostream>
#include <cstdio>
template <std::size_t... Indices>
struct sequence {};


template<std:: size_t N, std::size_t ... Indices>
struct make_sequenceAppend{
        using type = typename make_sequenceAppend<N-1, N, Indices...>::type;
};
template<std:: size_t , std::size_t ... Indices>
struct make_sequenceAppend<0ul, Indices...>{
        using type =  typename sequence< Indices...>::type;
};
template <std::size_t N>
struct make_sequence{
        using type = typename make_sequenceAppend<N-1, N>::type;
};

int main()
{
  make_sequence<4>();
  return 0;
}

你的专业声明是错误的。它应该是:

template<std::size_t ... Indices>
struct make_sequenceAppend<0ul, Indices...>{

此外,sequence< Indices...>::type不存在。您的完整专业可能应该是:

template<std::size_t ... Indices>
struct make_sequenceAppend<0ul, Indices...>{
        using type =  sequence< Indices...>;
};

您的main()中也缺少一个分号,但这无关紧要......