Chúng tôi đang trong quá trình thiết kế một thư viện C++ mới và quyết định đi với một phương pháp tiếp cận dựa trên mẫu cùng với một số chuyên môn mẫu từng phần cụ thể cho các trường hợp góc. Cụ thể, đây sẽ là một thư viện mẫu chỉ tiêu đề tiêu đề.Biên dịch thư viện mẫu tiêu đề chỉ thành một thư viện được chia sẻ?
Bây giờ, có một số lo ngại rằng điều này sẽ dẫn đến rất nhiều trùng lặp mã trong mã nhị phân, vì thư viện mẫu này sẽ được biên dịch vào bất kỳ thư viện hoặc tệp thực thi nào khác. được sử dụng). Tôi vẫn nghĩ rằng đây không phải là một vấn đề (đặc biệt, trình biên dịch thậm chí có thể nội tuyến những thứ mà nó không thể vượt qua ranh giới thư viện được chia sẻ).
Tuy nhiên, vì chúng ta biết tập hợp các loại hữu hạn này sẽ được sử dụng, có cách nào để biên dịch tiêu đề này thành thư viện và cung cấp tiêu đề khác chỉ với khai báo và không có gì khác? Lưu ý rằng thư viện không chỉ chứa các triển khai chung mà còn là các chuyên môn từng phần.
Bạn có nghĩa là "hữu hạn" hoặc "bị chặn" không? Rõ ràng bất cứ điều gì bạn làm trên một máy tính, hoặc trong vũ trụ này, sẽ là hữu hạn, vì vậy sự khác biệt là rất quan trọng. –
Tôi có nghĩa là bị chặn: chúng tôi sẽ cần các phiên bản của các mẫu này trong khoảng 8 loại và không còn nữa. Vì vậy, chúng tôi có thể dễ dàng viết ra một danh sách. – lytenyn
Hmm, tôi không hoàn toàn chắc chắn, và bạn chắc chắn sẽ phải gửi các tiêu đề thực tế, nhưng bạn có thể thêm các instantiations rõ ràng cho các loại đó vào một tệp nguồn và biên dịch nó và khai báo các mẫu đó ở bất kỳ đâu. Tôi chưa bao giờ thử điều này, nhưng tôi nghĩ điều này được cho là có hiệu quả mong muốn. –