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