【发布时间】:2011-08-24 17:19:35
【问题描述】:
ISO 草案 n3290 第 3.3.9 节第 4 段中的一点:
模板参数名称的声明区域嵌套在 立即封闭的声明 地区。[注:因此,一个 模板参数隐藏任何实体 在一个封闭的同名 范围 (3.3.10)。
Example:
typedef int N;
template<N X, typename N, template<N Y> class T> struct A;
任何人都可以......请告诉其他一些例子,除了这个......这种情况发生在哪里和哪里
草稿链接 n3290:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3290.pdf
【问题讨论】:
-
只是想知道,模板声明中
, typename N,的目的是什么? -
@iammilind:您可能应该阅读一些有关模板的基本教程。在这种情况下,
typename和class是等效的,如果这回答了您的问题。如果没有,则它声明一个名为N的类型模板参数,这反过来在模板范围内创建一个本地类型别名N,该类型在实例化期间用作模板的第二个参数。在该特定示例中,目的是因为N也是命名空间级别的类型,因此此参数隐藏命名空间范围内的 typedef。