以下是引用rjsp在2022-11-6 21:23:18的发言:
首先 class tempalte 不是 class,class template 被实例化后才是 class
我不知道为什么要称它为“递归继承”,class tuple<Head,Tail...> 与 class tuple<Tail...> 是两个不同的“类”类型
编译器不知道什么叫“递归”,自然也就识别不出是不是递归。
编译器看到 class tuple<a,b,c> 继承于 class tuple<b,c>,于是就去实例化 class tuple<b,c>,实例化 class tuple<b,c> 时又看到它继承于 class tuple<c> 于是就去实例化 class tuple<c>,……,一直到 class tuple<>
C++是静态语言,不可能运行时生成任何类型。
首先 class tempalte 不是 class,class template 被实例化后才是 class
我不知道为什么要称它为“递归继承”,class tuple<Head,Tail...> 与 class tuple<Tail...> 是两个不同的“类”类型
编译器不知道什么叫“递归”,自然也就识别不出是不是递归。
编译器看到 class tuple<a,b,c> 继承于 class tuple<b,c>,于是就去实例化 class tuple<b,c>,实例化 class tuple<b,c> 时又看到它继承于 class tuple<c> 于是就去实例化 class tuple<c>,……,一直到 class tuple<>
C++是静态语言,不可能运行时生成任何类型。
于是就去实例化 class tuple<b,c>,实例化 class tuple<b,c>
1、这个意思是class tuple<b,c>的实例化还没结束就又去实例化 class tuple<b,c>这个类了是吗?直到遇到了class tuple<>,然后再折回来一层一层去做没有完成的实例化吗?
2、那这样继承的时候,就像例子class tuple<a,b,c> 继承于 class tuple<b,c>,这个父类是怎么能把b又单独提取出来的?就像你刚刚说的
class tuple<Head,Tail...> 与 class tuple<Tail...> 是两个不同的“类”类型,那么父类就没有把Head单列出来了。