จากการเปรียบเทียบที่แตกต่างกันระหว่างเทมเพลต C ++ และเจเนอรัล C # / Java เช่นนี้ -
ฉันเข้าใจว่ามีการใช้เทมเพลต C ++ โดยการประมวลผลล่วงหน้าบางอย่าง (การแทนที่ข้อความธรรมดาก่อนการแยกวิเคราะห์) ไม่ได้รวบรวม เนื่องจากการตรวจสอบชนิดในเทมเพลต C ++ มีลักษณะคล้ายกับมาโคร C ฉันหมายความว่าหากมีข้อผิดพลาดบางอย่างพวกเขาเป็นข้อผิดพลาดจากรหัสที่สร้างขึ้นหลังจากการประมวลผลบล็อกรหัส templated ไม่ใช่จากแม่แบบเอง กล่าวอีกนัยหนึ่งมันเป็นแค่มาโครระดับสูงในซี
จากนั้นฉันก็พบข้อเท็จจริงอื่น ๆ ที่สนับสนุนสิ่งนี้ -
ฉันคิดว่าถ้ามีการใช้เทมเพลต C ++ โดยการประมวลผลล่วงหน้าจะมีปัญหากับการเชื่อมโยงแบบไดนามิก (โดยใช้. dll) และ googling ที่รวดเร็วสนับสนุนสิ่งนี้
อีกจุดคือค่าคงที่จำนวนเต็มสามารถส่งผ่านเป็นอาร์กิวเมนต์ไปยังเทมเพลต และมันยังรองรับการเรียกซ้ำบางประเภท แต่การเรียกซ้ำนี้ไม่พบในรหัสแอสเซมบลีที่รวบรวม / เครื่อง สิ่งที่เรียกซ้ำได้รับการจัดการในเวลารวบรวมโดยการสร้างฟังก์ชั่นสำหรับทุกการโทรซ้ำและจึงมีไบนารีที่ปฏิบัติการขนาดใหญ่ แต่เร็วกว่า
แม้ว่าจะแตกต่างจากแมโคร C แต่มีความสามารถที่เหนือกว่า แต่เท็มเพลต C ++ ไม่ได้ถูกนำไปใช้กับการประมวลผลล่วงหน้าบางประเภทใช่หรือไม่ สิ่งนี้นำไปใช้ในคอมไพเลอร์ C ++ ที่แตกต่างกันอย่างไร