C++ I';我想看看嵌套名称说明符中忽略函数名的示例

C++ I';我想看看嵌套名称说明符中忽略函数名的示例,c++,language-lawyer,c++14,name-lookup,C++,Language Lawyer,C++14,Name Lookup,N4140第53页中的脚注(33): 忽略函数名的查找包括中出现的名称 嵌套名称说明符、详细类型说明符或 基说明符 在这里,B不能指定函数,因此在查找过程中忽略任何名为B的函数。同样的道理也适用于 class A a; 其中A无法命名函数。像std::chrono::high\u resolution\u clock这样的表达式如何找到名为chrono的函数?要查找的名称不应该位于嵌套名称说明符中最后一个:之后吗?@Ayrosa我认为您有点困惑。嵌套名称说明符是最后一个标识符之前的位,在本例中

N4140第53页中的脚注(33):

忽略函数名的查找包括中出现的名称 嵌套名称说明符、详细类型说明符或 基说明符

在这里,
B
不能指定函数,因此在查找过程中忽略任何名为
B
的函数。同样的道理也适用于

class A a;

其中
A
无法命名函数。

std::chrono::high\u resolution\u clock
这样的表达式如何找到名为
chrono
的函数?要查找的名称不应该位于嵌套名称说明符中最后一个
之后吗?@Ayrosa我认为您有点困惑。嵌套名称说明符是最后一个标识符之前的位,在本例中为
std::chrono::
<必须通过查找找到code>chrono,就像必须找到
high_resolution_clock
一样。必须查找每个名称,包括
std
chrono
。但公平地说,无论如何都不能有
std::chrono
函数,因为在同一父命名空间中不能有同名的函数和命名空间。也许
#include
/
名称空间N{void std();int zero(){return std::move(0);}}int main(){return N::zero();}
就是一个很好的例子?@Columbo我想我终于理解了你的例子。即使
std()
a
的成员函数,代码也不会打断(1),因为从表达式
std::cout开始的名称
std
的查找忽略了函数
std
的名称
class A : B {};
class A a;