什么是“一个”呢;通过名称查找关联的标识符“;? 所以我是从C++标准阅读这个短语的。

什么是“一个”呢;通过名称查找关联的标识符“;? 所以我是从C++标准阅读这个短语的。,c++,templates,C++,Templates,14.6.2.2[临时部门扩展]/3 如果id表达式包含 通过名称查找与使用依赖类型声明的一个或多个声明关联的标识符 谁能解释一下术语“通过名称查找关联的标识符”的确切含义吗,它是在谈论ADL还是什么?它意味着在执行名称查找后,现在与该名称的一个或多个声明关联的标识符。可以将其视为一个名称到它可能引用的一组声明的一对多映射。当存在多个关联声明(例如函数重载)时,仅在执行名称查找(和关联)后才执行重载解析 现在,关于你引用的内容。依赖类型是指依赖于当前模板实例化的类型。例如,如果我们有 te

14.6.2.2[临时部门扩展]/3

如果id表达式包含

  • 通过名称查找与使用依赖类型声明的一个或多个声明关联的标识符

谁能解释一下术语“通过名称查找关联的标识符”的确切含义吗,它是在谈论ADL还是什么?

它意味着在执行名称查找后,现在与该名称的一个或多个声明关联的标识符。可以将其视为一个名称到它可能引用的一组声明的一对多映射。当存在多个关联声明(例如函数重载)时,仅在执行名称查找(和关联)后才执行重载解析

现在,关于你引用的内容。依赖类型是指依赖于当前模板实例化的类型。例如,如果我们有

template<class T> struct A {
    A<T> a1; // A<T> is a dependent type
    A<T*> a2; // A<T*> is not a dependent type
};
模板结构A{
a1;//A是依赖类型
A a2;//A不是依赖类型
};
在上面的示例中,之所以
A
是依赖的,是因为它引用了模板类的当前实例化。但是
A
指的是一个不同的实例化——一个完全不同的类


因此,您的引用基本上是说,如果您的模板代码中有一个标识符,它与使用依赖类型的某个声明相关联,那么包含它的id表达式本身就是依赖类型的。也就是说,它指的是引用当前实例化的类型。

在@tadman 14.6.2.2[temp.dep.expr]/3I也希望看到一个示例,该示例准确地描述了行“通过名称查找与一个或多个使用依赖类型声明相关联的标识符”。非常感谢:)或者只需函数调用(全局调用,而不是重载)使参数依赖于类模板参数即可。也可以有非函数的例子吗?Thanks@AngelusMortis请参见编辑。如果缺少什么,请告诉我。