C++ c++;支持归纳类型定义吗?
我试图归纳地定义一种类型,例如基本类型C++ c++;支持归纳类型定义吗?,c++,templates,template-meta-programming,C++,Templates,Template Meta Programming,我试图归纳地定义一种类型,例如基本类型 MyClass<0>=int MyClass=int 归纳地 Myclass<k>=list<MyClass<k-1>> Myclass=list 我想要一些像 class My_class<int k>= if k=0 int else list<Myclass<k-1>> class My\u class= 如果k=0 int 其他
MyClass<0>=int
MyClass=int
归纳地
Myclass<k>=list<MyClass<k-1>>
Myclass=list
我想要一些像
class My_class<int k>=
if k=0
int
else
list<Myclass<k-1>>
class My\u class=
如果k=0
int
其他的
列表
< C++支持这种编码吗?< /P>
如果不是,有其他语言支持我想要实现的吗?
< P>至少C++。< /P>template <int k>
struct Myclass_helper { using type = list<typename Myclass_helper<k-1>::type>; };
template < >
struct Myclass_helper<0> { using type = int; };
template <int k>
using Myclass = typename Myclass_helper<k>::type;
模板
struct Myclass_helper{using type=list;};
模板<>
结构Myclass_helper{using type=int;};
模板
使用Myclass=typename Myclass\u helper::type;
如果您不知道发生了什么,那么关键字是模板专门化和模板别名。尝试Haskell的代数数据类型和类型推断。另外,默认情况下,所有函数都是“模板”@谢尔盖,你最后的陈述并不总是正确的。函数的类型可以推断为非多态类型。同样,在Haskell中实现这个问题的目标也不是那么容易——注意,它是一个从自然数到类型的函数;您必须通过类型模拟自然,或者使用一些依赖类型扩展。