我正在開發一個大量使用模板的C++庫。對於大多數類,所有代碼都駐留在一些.hpp
文件中,該文件將直接由客戶端代碼執行#include
d。有兩件事我很擔心:縮小模板標題的大小
是否有一些將實現代碼移動到「背景」的設計模式?當我設計非模板類時,我經常將「接口」類和實現類分開,前者通過執行諸如
getImpl()->foo()
之類的操作將委託給後者,以便實現代碼可以動態鏈接到。我不知道如何爲模板做到這一點。 可能動態鏈接對模板沒有意義,我想呢?大模板標題(> 1000行)是否通用?還是那麼糟糕?如果不好,我可以用它做什麼?
我知道這個問題How to reduce output size of template-heavy C++ code?的,但我認爲我們是想詢問不同的事情:這個問題的任擇議定書試圖降低輸出的大小,而我想,以減少大小我的庫標題本身。
UPDATE:舉例來說,如果你要設計std::vector
,你將如何組織其接口&實現(如果需要的話)?
你到底我一個_reduce sizes_?爲了避免應用太多種模板參數的膨脹代碼實例化? –
@πάνταῥεῖ按尺寸我主要是指代碼行。將千行標題暴露給客戶聽起來對我來說是個不好的主意(至少對於非模板代碼)。 –
如果您的非模板代碼不依賴於模板參數,請將其移出到單獨的編譯單元。 –