Dan*_*aum 7 c++ argument-dependent-lookup
我正在查看关于参数依赖查找的维基百科条目,并且(2014年1月4日)给出了以下示例:
#include<iostream>
int main()
{
std::cout << "Hello World, where did operator<<() come from?" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
......有以下评论:
请注意,std :: endl是一个函数,但它需要完全限定,因为它被用作operator <<的参数(std :: endl是函数指针,而不是函数调用).
我的想法是评论不正确(或根本不清楚).我正在考虑更改评论,而不是
请注意,std :: endl需要完全限定,因为ADL不适用于函数调用的参数 ; 它只适用于函数名称本身.
我是否认为维基百科的评论不正确?我建议的改变是否正确?(即,在这个例子中,我对ADL的理解是正确的吗?)
Meh*_*dad 10
维基百科所说的并没有错.
std::cout << "Hello World, where did operator<<() come from?" << std::endl
Run Code Online (Sandbox Code Playgroud)
相当于以下(假设operator<<是作为自由函数实现的)
operator<<(
operator<<(std::cout, "Hello World, where did operator<<() come from?"),
std::endl)
Run Code Online (Sandbox Code Playgroud)
这显然需要两者的命名空间限定cout,endl因为这是依赖于参数的查找(函数),而不是"参数查找".
参数决定了要调用的函数,而不是方法.
| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |