Ayr*_*osa 4 c++ language-lawyer name-lookup c++14
N4140第53页的脚注(33):
忽略函数名称的查找包括出现在嵌套名称说明符,详细说明类型说明符或 基本说明符中的名称.
namespace A
{
void std();
void foo()
{
std::cout << "Hello World"; // (1)
}
};
Run Code Online (Sandbox Code Playgroud)
在(1)中,std不能命名函数,因此A::std在查找期间忽略该函数,并且代码编译.
在[basic.lookup.qual]/1中明确提到了这条规则:
如果嵌套名称说明
::符中的作用域解析运算符前面没有decltype-specifier,则查找之前的名称仅考虑其专门化为类型的名称空间,类型和模板.::
该列表中的另一个例子包括
class A : B {};
Run Code Online (Sandbox Code Playgroud)
这里,B不能指定一个函数,因此B在查找期间忽略所调用的任何函数.同样如此
class A a;
Run Code Online (Sandbox Code Playgroud)
哪里A不能命名功能.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |