SORU
6 AĞUSTOS 2013, Salı


ADL örneği hakkında Bjarne yanlış, ya da derleyici bir hata var mı?

OkuyorumThe C Programming Language, 4th Edition(Bjarne Stroustrup) 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 bildirimleri ostream 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
6 AĞUSTOS 2013, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009
  • tatermoog

    tatermoog

    2 AĞUSTOS 2006
  • THE RED DRAGON

    THE RED DRAG

    6 ŞUBAT 2009