我設計了我自己的std :: vector實現,我稱其爲il :: vector。我想要麼:防止在模板中使用某些類型
- 專營它,你可以使用複製型
memcpy
(int
,double
,std::array<double, n>
,等等)。 - 對於不能用
memcpy
複製的類型使用不同的類,例如std::vector
。在後一種情況下,如果我想用某些不能用memcpy
複製的內容(例如il::vector<std::vector<double>>
)進行實例化,我想要編譯時錯誤。
有沒有辦法做到這一點? PS:我總是得到如下答案:你應該使用std :: vector來代替。我用我自己的圖書館,主要理由是:
- 我想用一個指針來構造我的IL ::向量不被複制的數據
- 我想用ptrdiff_t的作爲數組的索引,而不是這個的愚蠢的 size_t。使用無符號整數索引是STL最糟糕的想法之一。即使Stroustrup似乎也反對它。
- 我想用我自己的分配器來設計分配器,而不是爲90年代這個設計用於不同目的的奇怪模型。
對不起有點粗魯,但我厭倦了:STL是上帝,甚至不說它不符合你的需求。
@ user657267我真的不明白你的答案。此外,我不想使用C++庫。 – InsideLoop 2014-11-06 08:13:15
關鍵是'std :: copy'已經在可複製的類型上執行了'memcpy'或等價物,否則就使用拷貝構造函數。 '我不想使用C++ Library'然後重新創建輪子。 – user657267 2014-11-06 08:16:38
@ user657267:我正在開發通常由Fortran/C/Delphi調用的庫。當我得到數據時,它是以指針的形式出現的。沒有辦法將指針封裝在std :: vector中。除非我找到辦法做到這一點,否則我不能使用標準庫。 – InsideLoop 2014-11-06 08:20:35