The C ++ Programming Language, 4th Edition ( Bjarne Stroustrup tarafından ) hakkında okuyorumbağımsız değişkene bağlı arama. İşte alıntı (26.3.6, Aşırı agresif ADL):
Bağımsız değişkene bağlı arama (genellikle ADL olarak adlandırılır) ayrıntılardan kaçınmak için çok kullanışlıdır (14.2.4). Örneğin:
#include <iostream> int main() { std::cout << "Hello, world" << endl; // OK because of ADL }
Bağımsız değişkene bağlı arama olmadan
endl
manipülatör bulunamazdı. İlk bağımsız değişken için bu, derleyici ilan olduğu<<
bir olduğuostream
tanımlanmıştırstd
. Bu nedenle, ararendl
içindestd
ve onu (içinde bulur<iostream>
).
Ve derleyici tarafından üretilen sonuç şu şekildedir (C ++ 11 modu):
prog.cpp: In function ‘int main()’:
prog.cpp:4:36: error: ‘endl’ was not declared in this scope
std::cout << "Hello, world" << endl;
^
Bu ya derleyicideki ya da kitaptaki bir hatadır. Standart ne diyor?
Güncelleme:
Biraz netleştirmem gerekiyor. Doğru cevabın kullanmak olduğunu biliyorum std::endl
. Soru kitaptaki metinle ilgiliydi. As Lachlan Easton zaten bu sadece bir yazım hatası değil, dedi. Bütün paragraf (muhtemelen) yanlış. Kitap başka (daha az bilinen) bir yazara aitse bu tür bir hatayı kabul edebilirim, ancak Bjarne tarafından yazıldığı için şüpheliydim (ve hala da öyleyim).
std::endl
hata yok