1

依赖名称在 C++ 标准中没有明确定义,因此在确定什么是依赖名称方面还有很多不足之处,这让我想到了这个问题:具有依赖类型的非静态数据成员的非限定名称是否依赖?例如:

template<typename T>
struct S { T t; };

这里的名称t是从属名称吗?类型当然是依赖的,但不清楚名称是否是依赖的,因为它总是可以被解析为引用一个成员。

4

1 回答 1

2

不,t不依赖。虽然关于扩展从属名称的定义存在一个未解决的问题,但名称是从属的想法是对它的查找是 deferred。(即使没有 ADL,也可以考虑查找T::foo,它可能是一个函数、一个函数模板或一个数据成员(没有templateor typename)。)这里的情况并非如此;t(在内部的上下文中S)立即解析为类成员。

于 2019-08-17T03:24:37.407 回答