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

  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • funbro1

    funbro1

    11 Aralık 2007
  • Huot Media

    Huot Media

    7 Mayıs 2010