Bjarne是否对ADL的示例有误,还是我遇到了编译器错误?
我正在阅读有关C ++编程语言的第四版(由Bjarne Stroustrup撰写),参数依赖查找。这是报价(26.3.6,过度攻击性ADL): 依赖参数的查找(通常称为ADL)对于避免冗长非常有用(14.2.4)。例如: #include <iostream> int main() { std::cout << "Hello, world" << endl; // OK because of ADL } 如果没有依赖于参数的查找,endl将找不到操纵器。实际上,编译器会注意到to的第一个参数<<是在中ostream定义的std。因此,它endl在中std查找并找到它(在中<iostream>)。 这是编译器(C ++ 11模式)产生的结果: prog.cpp: In function ‘int main()’: prog.cpp:4:36: error: ‘endl’ was not declared in this scope std::cout << "Hello, world" << endl; ^ 这是编译器还是本书中的错误。标准怎么说? 更新: 我需要澄清一下。我知道正确的答案是使用std::endl。问题是关于书中的文字。正如Lachlan Easton所说,这不仅仅是错字。整个段落(可能)是错误的。如果这本书是由另一位(鲜为人知的)作者撰写的,我可以接受这种错误,但是由于(它仍然是)由Bjarne撰写,所以我一直(并且仍然)对此表示怀疑。