Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;支持归纳类型定义吗?_C++_Templates_Template Meta Programming - Fatal编程技术网

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中实现这个问题的目标也不是那么容易——注意,它是一个从自然数到类型的函数;您必须通过类型模拟自然,或者使用一些依赖类型扩展。