我想看一个函数名称在嵌套名称说明符中被忽略的示例
I'd like to see an example of a function name being ignored in a nested-name-specifier
N4140 第 53 页中的脚注 (33):
Lookups in which function names are ignored include names appearing in
a nested-name-specifier, an elaborated-type-specifier, or a
base-specifier.
namespace A
{
void std();
void foo()
{
std::cout << "Hello World"; // (1)
}
};
在(1)中,std
无法命名函数,因此函数A::std
在查找时被忽略,the code compiles.
此规则在 [basic.lookup.qual]/1:
中明确提及
If a ::
scope resolution operator in a nested-name-specifier is
not preceded by a decltype-specifier, lookup of the name preceding
that ::
considers only namespaces, types, and templates whose
specializations are types.
列表中的另一个示例包括
class A : B {};
此处,B
不能指定一个函数,因此在查找过程中将忽略任何称为 B
的函数。同样适用于
class A a;
其中 A
无法命名函数。
N4140 第 53 页中的脚注 (33):
Lookups in which function names are ignored include names appearing in a nested-name-specifier, an elaborated-type-specifier, or a base-specifier.
namespace A
{
void std();
void foo()
{
std::cout << "Hello World"; // (1)
}
};
在(1)中,std
无法命名函数,因此函数A::std
在查找时被忽略,the code compiles.
此规则在 [basic.lookup.qual]/1:
If a
::
scope resolution operator in a nested-name-specifier is not preceded by a decltype-specifier, lookup of the name preceding that::
considers only namespaces, types, and templates whose specializations are types.
列表中的另一个示例包括
class A : B {};
此处,B
不能指定一个函数,因此在查找过程中将忽略任何称为 B
的函数。同样适用于
class A a;
其中 A
无法命名函数。