ADL örneği hakkında Bjarne yanlış, ya da derleyici bir hata var mı?
OkuyorumThe C Programming Language, 4th Edition(Bjarne Stroustrup) argument-dependent-lookup hakkında. Burada alıntı (26.3.6, Overaggressive ADL):
Bağımlı değişken arama (ADL sık sık olarak anılacaktır) ayrıntı (14.2.4) önlemek için çok yararlıdır. Örneğin:
#include <iostream> int main() { std::cout << "Hello, world" << endl; // OK because of ADL }
Bağımlı değişken arama olmadan,
endl
manipülatör yeri olmayacak. Olduğu gibi,<<
ilk bağımsız değişken derleyici bildirimleriostream
std
tanımlanmış. Bu nedenle,std
endl
arar ve (<iostream>
) bulur.
Ve burada result derleyici (C 11 mod) tarafından üretilen:
prog.cpp: In function ‘int main()’:
prog.cpp:4:36: error: ‘endl’ was not declared in this scope
std::cout << "Hello, world" << endl;
^
Ya bu kitapta derleyici veya bir hata değildir. Standart ne diyor?
Güncelleme:
Biraz açıklık getirmek istiyorum. Doğru cevap std::endl
kullanmak olduğunu biliyorum. Soru kitap metni hakkında. GibiLachlan Eastonzaten, sadece bir yazım hatası değildir " dedi. Bütün paragraf (muhtemelen) yanlış. Eğer kitap (az bilinen) başka bir yazar tarafından ise bu tür bir hata kabul edebilirim, ama bir Kadın tarafından yazıldığı için (ve hala am) şüphem yok.
CEVAP
Derleyici bir hata değil. ADL arama için kullanılırfonksiyonlardeğilargümanlar. operator<<
işlevi ADL burada parametreleri bakarak std::cout
ve ne olması gerektiği gibi) std::endl
ile bulundu.
Jenerik kullanırken derleyici hata ve ...
&Quot;Bir girişim, yanlış bir biçimde ...
XML:teminatsız veya yanlış hatası hata...
Neden=hata AYIKLAMA Yanlış ayar benim ...
&; Bu UİView değil't bir NSİSVari...