模板递归不会停止
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()
中也缺少一个分号,但这无关紧要......
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- TSP递归解的迭代形式
- 如何在Elixir中调用递归函数并行
- 返回递归调用和仅递归调用的区别
- 数组元素打印的递归方法
- 使用递归时获取变量的奇怪值
- 如何在C++中递归地按相反顺序打印集合
- 到连接组件算法的问题(递归)
- 如何使用递归打印修改后的星号三角形图案
- 使用递归模板动态分配的多维数组
- 递归函数有效,但无法记忆
- 包含模板文件的递归会导致编译失败