Şablon sınıfını derlemek için derleyici iki aşamalı arama kullandığı anlamına mı geliyor?İki fazlı arama - açıklama gerekli
cevap
Şablonlar iki kez (en az) derlenmektedir: şablon kodu kendisi sözdizimi için kontrol edilir
örnekleme o olmadan.
Örn: Böyle (tam tip bilinir) örnekleme sırasındavb
;
gibi herhangi sözdizimi hataları hataları, şablon kodu tüm çağrılar söz konusu türü için geçerli olduğundan emin olmak için tekrar kontrol edilir.
Ör: Şablon, söz konusu türde bulunmayabilecek işlevlere çağrıyı çağırabilir.
Bu, İki Fazlı Arama olarak adlandırılır.
Ayrıca, bağımlı olmayan adların aranmasının ilk aşamada yapıldığını, oysa şablon parametresine bağlı isimlerin aranmasının ikinci sırada yapıldığını unutmayın. faz. Önem, eğer sqrt (1) 'yi çağırırsanız, şablon tanımlanmadan önce' sqrt '' un bildirilmesi gerekir. Ama eğer 't', bir şablon parametresi olan bir türün örneğidir 'sqrt (t) 'olarak adlandırırsanız, şablon başlatılıncaya kadar' sqrt' görünmemelidir. MSVC bunu doğru bir şekilde yapmadı: bildiğim her şey için hala geçerli olmayabilir. –
Her neyse, bu yüzden iki fazlı derleme veya bir şey yerine iki fazlı * arama * olarak adlandırılır. İlk fazın sadece sözdizimini kontrol etmekten daha fazlasını yapması gerekiyordu, ancak MS ilk arama aşamasını uygularken bazı zorluklar yaşadı, bu yüzden hepsini anında gerçekleştirdiler: http://stackoverflow.com/questions/6273176/what-exactly-is -microsoft-visual-cs-iki-faz-şablon-instantia –
@SteveJessop: Bu daha çok gibi geliyor - anahtar iki-fazlı arama "arama" kısmıdır. Teşekkürler! –
- 1. Bir fazlı ve iki fazlı (XA) işlem arasındaki gerçek fark
- 2. İki fazlı işlemler hangi sorunlara yol açabilir?
- 3. Akıllı göstergeler iki fazlı yapı ihtiyacını ortadan kaldırır mı?
- 4. İki özellikten biri, veri modelinden gerekli
- 5. açıklama
- 6. İki bölümde arama yaparken çökme
- 7. Açıklama Açıklama div divual
- 8. php mysql arama anahtarı iki veya daha fazla kelime boşluk olmadan kombine edildiğinde arama
- 9. IntelliJ IDEA yapısal arama ile ek açıklama parametresi alın
- 10. Get Açıklama Tabloya Göre Açıklama Tablo
- 11. İki sınıf, geri arama ve birim test
- 12. Bölüm 10.13, iki birim sınaması, açıklama olmadan başarısız olur
- 13. Kavanozda iki değişken için @ açıklama annotasyonu nasıl tanımlanır
- 14. MISRA kural 13.6 açıklama
- 15. Açıklamalar: arrayOf gerekli olduğunda
- 16. Gerekli alanları iki farklı modelden bir araya getirme
- 17. iPad/iPhone'da yalnızca bir tane gerektiğinde gerekli iki tıklama gereklidir
- 18. Meteor parçacığı tarzı açıklama
- 19. C# terminoloji yardımı gerekli #
- 20. tek bir açıklama
- 21. XA veri kaynağını ve 2 fazlı işlemi ne zaman kullanabilirim
- 22. Yay İşlemsel Ek Açıklama
- 23. Dörtlü açıklama ve C uygulaması
- 24. MPI_Comm_split Açıklama
- 25. Açıklama ve
- 26. shutil.rmtree() açıklama
- 27. Ek Açıklama
- 28. clipRect - açıklama
- 29. Jinja2 Açıklama
- 30. IntelliJ IDEA'da Ek Açıklama Bulma
@Nawaz Sadece iki aşamalı aramadan duydum, kayıp bir şey var mı? – smallB
Konuyla ilgili kısa ve yararlı bir makale http://blog.llvm.org/2009/12/dreaded-two-phase-name-lookup.html adresinde bulunabilir –
Ayrıca bkz http://stackoverflow.com/a/10171507/76722 ve http://stackoverflow.com/a/7241548/76722 –