c++ - 内嵌类继承外层类为什么没有死循环

标签 c++

template<typename... TA>
struct AAA
{
    template<typename TB>
    struct BBB : AAA<TA..., SomeClass<TB>>
    {}
};

我看过上面的代码,但很难理解代码背后的理论。

问题 1> 是否有一个特定的概念来描述这种模式的用法? 有什么引用资料可以引用吗?

问题2>为什么struct 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 的任何实例化。

关于c++ - 内嵌类继承外层类为什么没有死循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46004166/

相关文章:

c++ - 核心配置文件与版本字符串?仅在 mesa 10.0.1 中获取 GLSL 1.3/OGL 3.0

c++ - 内存中的浮点表示对我来说不清楚

c++ - 如何在 C++ 中创建锯齿状的字符串数组?

c++ - 从其他线程锁定类成员

c++ - 当向 CURLOPT_DNS_SERVERS 提供错误 ip 时,Curl 返回全部正常

c++ - 线程指针的 vector ,push_back导致崩溃

c++ - 在 Windows 视频支持下使用 PJSIP

c++ - 如何简化此语句?

c++ - 基于QWidget的Qt小部件

c++ - 在 C++ 中将数组传递给函数的不同语法