C ++ şablonları ve bunun gibi C # / Java jenerikleri arasındaki farklı karşılaştırmalardan
C ++ şablonlarının bir çeşit ön işleme (derlemeden önce düz metin değiştirme) tarafından derlendiğine dair bir algıya sahip oldum. Çünkü C ++ şablonlarındaki kontrol tipi C makrolarına benzemektedir. Yani, bazı hatalar varsa, şablonların kendisinden değil, şablonlanmış kod bloklarını işledikten sonra oluşturulan kodun hatalarıdır. Başka bir deyişle, bunlar yalnızca C'deki makroların bir tür üst sürümleridir.
Sonra bunu destekleyen başka gerçekler buldum.
C ++ şablonlar önişlemeyle uygulanırsa, dinamik bağlantıda (.dll kullanarak) sorun olacağını düşünmüştüm. Ve hızlı bir googling bunu destekledi.
Başka bir nokta, tamsayı sabitleri şablonlara argüman olarak geçirilebilir. Hatta bir nevi özyinelemeyi bile destekliyor. Ancak bu özyineleme derlenmiş montaj / makine kodunda bulunamadı. Özyineleme işi derleme zamanlarında her özyinelemeli çağrı için bir fonksiyon üreterek ve böylece daha büyük fakat daha hızlı bir çalıştırılabilir ikili dosyaya sahip olarak yönetilir.
C makrolarının aksine, bazı üstün yetenekleri vardır. Ancak C ++ şablonu bir çeşit ön işleme ile uygulanmadı mı? Bu, farklı C ++ derleyicilerinde nasıl uygulanır?