我最近用一些使用SSE的Vector/Matrix類替換了一些,並且現在確保內存正確對齊。自定義std :: allocator替換運算符的新類
按照this question的答案,我已經替換了operator new/delete以獲取需要它的類,並開始使用自定義分配器來使用STL容器 - 但是,似乎有一些衝突這兩個:
爲了開始,我簡單地複製並粘貼了here的樣本分配器類,當我將它用於沒有自定義新/刪除的問題類型的std :: vector時,它編譯得很好,但是當我替換這些函數時,我從構造函數()中得到一個錯誤「沒有匹配'operator new'的匹配函數」,
void construct(pointer p, const T& t) { new(p) T(t); }
我想我已經取代了「通常」的新的事實,以某種方式模糊放置新?但是,由於我不能寫出自己的貼片,所以我不確定要做什麼......我是新的(NPI)整個定製內存分配的東西,所以任何建議都會非常感謝!我正在Linux上使用Clang v3.4(或gcc 4.1.2)編譯;不使用C++ 11。
非常感謝。
爲了解決這個問題,':: new' **或**爲你的班級實施了一個重寫的放置'new'。 – Yakk 2014-09-18 18:12:21
啊,是的,這是有道理的...謝謝!出於某種原因,我完全錯過了ccpreference上提到的註釋: 「即使放置新的(重載5和6)不能被替換,具有相同簽名的函數也可以在類作用域中定義,如上所述」...哎呀。 – YamLady 2014-09-19 10:53:56