BjarneはこのADLの例について間違っていますか、それともコンパイラのバグがありますか?
私はC ++プログラミング言語第4版(Bjarne Stroustrupによる)について読んでいます引数依存のルックアップ。引用は次のとおりです(26.3.6、過度に攻撃的なADL): 引数に依存するルックアップ(ADLと呼ばれることが多い)は、冗長性を回避するのに非常に役立ちます(14.2.4)。例えば: #include <iostream> int main() { std::cout << "Hello, world" << endl; // OK because of ADL } 引数に依存するルックアップendlがないと、マニピュレータは見つかりません。そのまま、コンパイラは、への最初の引数<<がで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です。質問は本の中のテキストについてでした。ラクランイーストンはすでにそれだけでタイプミスではない、と述べました。段落全体が(おそらく)間違っています。その本が他の(あまり知られていない)著者によるものであれば、私はこの種の誤りを受け入れることができますが、それがビャーネによって書かれたので、私は疑っていました(そして今でもそうです)。