在没有模板参数的类模板中使用类名
考虑 C 书中的以下代码:
<code class="cpp">template <typename E> class Link { ... Link* next; // this line may be confusing ... };</code>
在此代码中,声明成员 next 时未指定模板参数 E,引发了对其正确性的担忧。接下来不应该是 Link
解释
这是通过“注入类名”的概念来解释的。根据 C 标准 [temp.local],当在没有模板参数的情况下使用时,类模板中的类名称相当于类名称后跟尖括号中包含的模板参数。因此,在这种情况下,Link* 相当于 Link
这条规则是为了方便起见,确保类中的类名引用类本身,而不是带有同名。对于类模板,它提供了速记符号,特别是在处理扩展模板参数列表时。
以上是`Link* next` 是否使用 C 模板中注入的类名?的详细内容。更多信息请关注PHP中文网其他相关文章!