[英]Why function fun is not qualified for ADL?
我有简单的namespace
,它有一个变量和一个函数。 在main
我尝试调用没有名称空间限定符的函数,以及使用名称空间限定符调用变量。
namespace SAM
{
int p = 10;
void fun(int)
{
cout<<"Fun gets called";
}
}
int main()
{
fun(SAM::p);//why SAM::fun is not get called?
return 0;
}
我不能称之为有趣,为什么它不符合ADL(依赖于参数的名称查找)?
我在Visual Studio中遇到以下错误。
'有趣':找不到标识符
如果我使用SAM::fun
,它可以工作。
ADL用于类型 ,而不是变量 ,例如
namespace SAM
{
struct P {};
void fun(P)
{
cout<<"Fun gets called";
}
}
int main()
{
SAM::P p;
fun(p);
return 0;
}
在C ++编程语言中,依赖于参数的查找(ADL)或依赖于参数的名称查找适用于查找非限定函数名称,具体取决于赋予函数调用的参数类型。
参考: 依赖于参数的名称查找
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.