为什么嵌入类别的类别继承了外部类时没有无限循环

why there is no infinite loop when embedded class inherits the outer class

本文关键字:外部 无限循环 继承 为什么      更新时间:2023-10-16
template<typename... TA>
struct AAA
{
    template<typename TB>
    struct BBB : AAA<TA..., SomeClass<TB>>
    {}
};

我已经看到了上述代码,并且很难理解代码背后的理论。

问题1>是否有一个特定概念来描述这种模式的用法?我可以参考吗?

问题2>为什么结构BBB的定义不会引起无限循环?

谢谢

尝试考虑实例化的实际示例。一些情况应该明确:

using Type1 = AAA<>::BBB<int>;
// Type1 baseclass is AAA<SomeClass<int>>
using Type2 = typename Type1::BBB<char>;
// Type2 baseclass is AAA<SomeClass<int>, SomeClass<char>

等。直到您"伸手去拿"并要求另一种实例化之前,没有。例如,直到定义type2之前,任何一组x的type1 :: bbb的任何实例化。