小编Man*_*ink的帖子

使用 C++ 模板在类型系统中实现自然数

我有这个结构模板

template<typename N>
struct Succ{};
Run Code Online (Sandbox Code Playgroud)

和这个函数模板

template<typename N> N dec(Succ<N> s_n){
    N n;
    return n;
}
Run Code Online (Sandbox Code Playgroud)

这正是我想要的,如果我经常递减一次,我会收到编译器错误。

现在,我想在我的项目中使用这种风格的代码来捕获错误,但是创建初始“值”非常繁琐,我的意思是, 2 已经是Succ<Succ<SomeType>>

如何使用 C++ 模板来完成此任务?就像是

Nat<2,SomeType> two;
Run Code Online (Sandbox Code Playgroud)

这与以下相同

Succ<Succ<SomeType>> two;
Run Code Online (Sandbox Code Playgroud)

有人可以给我这种模板编程的链接或其他资源吗?例如,如何使用 C++ 模板实现 Peano 算术以及如何更轻松地创建类型数字。

c++ templates types

1
推荐指数
1
解决办法
154
查看次数

标签 统计

c++ ×1

templates ×1

types ×1