【发布时间】:2019-08-17 02:30:31
【问题描述】:
从属名称在 C++ 标准中没有明确定义,因此在确定什么是从属名称方面还有很多不足之处,这让我想到了这个问题:是非静态数据的非限定名称依赖类型依赖的成员? 例如:
template<typename T>
struct S { T t; };
这里的名称t 是从属名称吗?类型当然是依赖的,但不清楚名称是否依赖,因为它总是可以解析为引用成员。
【问题讨论】:
-
我相信全名不是
t,而是S<T>::t。因此它将是依赖的。但我对此并不确定,无法给出实际答案。 -
@NicolBolas 一些消息来源似乎表明措辞不完整,“从属名称”也适用于类型和数据成员的名称。
-
@KrystianS:你用language-lawyer 标记了这个问题,所以你想要一个完全基于标准的答案,而不是“几个来源似乎陈述的”。您的问题在应用于标准时没有意义,因为根据该术语的定义,裸标识符从不是“从属名称”。
-
@KrystianS:“一些消息来源似乎表明措辞不完整,“从属名称”也适用于类型和数据成员的名称。”认为这来自 people 使用术语“依赖名称”的方式与 standard 使用它的方式之间的差异。因为我从来没有真正查过这个词,而且它比我被引导相信的要狭窄得多。但在该术语的使用上,标准与本身是一致的;问题是其他人,而不是标准。
-
@NicolBolas 好的,那么按照标准中的定义,依赖名称只是在满足该列表要求的函数调用中使用的非限定ID>
标签: c++ templates language-lawyer name-lookup dependent-name