C++标准中没有明确定义依赖名称,因此在确定依赖名称方面还有很多不足之处,这让我想到了这个问题:具有依赖类型的非静态数据成员的非限定名称是否相关?例如:
template<typename T>
struct S { T t; };
此处t
的名称是依赖名称吗?类型当然是依赖的,但不清楚名称是否是,因为它始终可以解析为引用成员。
不,t
不是依赖的。 虽然关于扩展依赖名称的定义存在一个悬而未决的问题,但名称依赖性的想法是延迟查找它。(即使没有 ADL,也要考虑查找T::foo
,这可能是函数、函数模板或数据成员(不带template
或typename
(。 这里的情况并非如此;t
(在S
内部的上下文中(会立即解析为类成员。