Teorik olarak, C++ şablonları olmadan hala Turing-complete, böylece bu dilde her işlev için C++ ile şablonlar da yazılabilen bir program yazabilirsiniz. Bilgime göre, C++'daki makro önişlemci Turing-complete değil, şablonlar. Yani sadece şablon olarak uygulanabilen, ancak makrolarla birlikte olmayan fonksiyonlar olmalıdır.
Pratik olarak, her şeyi aynı semantiklerle yeniden uygulamak mümkün olduğunu düşünmüyorum. Şablonlar olmadan, muhtemelen tip güvenliklerini feda etmeniz ve makroları, void*
veya basit Java kütüphaneleri için bile erken Java sınıfları gibi miras temelli yaklaşımları kullanmanız gerekir.
Daha gelişmiş meta programlama kitaplıkları için, örn. İfade şablonları, boyutlu analiz çerçeveleri, Boost.Spirit Boost.Proto, onlar başka bir meta-programlama biçimi olmadan uygulanabileceğinden şüpheliyim.Makrolar işe yarayabilir, ancak bu daha çok bir kod üreteci gibi olacak ve derleyiciye tip kontrolünü erteleyecek ve hata mesajları şu anda şablonlarımızla olandan daha da kötü olacak. Ek olarak, semantikler, w.r.t parametresinin geçmesinden farklıdır. Standart kitaplığın çoğunun şablonlardan oluştuğu göz önünde bulundurulduğunda, no.
Yumurta olmadan çırpılmış yumurta yapıp yapamayacağınızı sormak gibidir. – juanchopanza
Varsayımsal olarak, Java yaklaşımını takip edebilir ve her şeyi genel bir "Object" sınıfı veya "CObject" sınıfının bir alt sınıfını/torununu yapabilirsiniz. Pratik olarak, bu farklı bir hikaye. – tinlyx
@tinlyx Ama bu size aynı işlevi vermez. – juanchopanza