Từ các so sánh khác nhau giữa các mẫu C ++ và chung chung C # / Java như thế này-
Tôi có một nhận thức rằng, các mẫu C ++ được triển khai bằng một số loại tiền xử lý (thay thế văn bản thuần túy trước khi phân tích cú pháp), không biên dịch. Bởi vì kiểu kiểm tra trong các mẫu C ++ giống với các macro C. Ý tôi là, nếu có một số lỗi, chúng là lỗi từ mã được tạo sau khi xử lý các khối mã templated, không phải từ chính các mẫu. Nói cách khác, chúng chỉ là một loại phiên bản macro của C.
Sau đó, tôi tìm thấy một số sự thật khác hỗ trợ này-
Tôi nghĩ, nếu các mẫu C ++ được thực hiện bằng tiền xử lý, sẽ có vấn đề với liên kết động (sử dụng. Và một googling nhanh chóng hỗ trợ này.
Một điểm khác là, hằng số nguyên có thể được truyền dưới dạng đối số cho các mẫu. Và nó thậm chí còn hỗ trợ một số loại đệ quy. Nhưng đệ quy này không được tìm thấy trong mã lắp ráp / mã máy đã biên dịch. Điều đệ quy được quản lý trong thời gian biên dịch bằng cách tạo một hàm cho mỗi cuộc gọi đệ quy và do đó có một nhị phân thực thi lớn hơn nhưng nhanh hơn.
Mặc dù không giống như macro C, nó có một số khả năng vượt trội. Nhưng không phải mẫu C ++ được triển khai với một số loại tiền xử lý? Làm thế nào điều này được thực hiện trong các trình biên dịch C ++ khác nhau?