我最近使用SSE替换了一些向量/矩阵类,并确保内存正确对齐。
遵循此问题答案中的建议,我已经为需要它的类替换了operator new/delete,并开始编写自定义分配器来与STL容器一起使用,但是两者之间似乎存在一些冲突:
为了开始,我只是从这里复制并粘贴了样例分配器类。当我将它用于std::vector中的相关类型时,没有使用我的自定义new/delete时,它可以编译通过。但是当我替换那些函数时,在construct()函数中出现错误“no matching function for call to 'operator new'”。
void construct(pointer p, const T& t) { new(p) T(t); }
我猜我替换了“通常”的new,这可能使放置new变得模糊了?然而,考虑到我无法编写自己的放置new以供其选择,我真的不知道该怎么办... 我是整个自定义内存分配事情的新手,所以任何建议都将不胜感激!我正在使用Clang v3.4(或gcc 4.1.2)在Linux上进行编译;不使用C ++ 11。谢谢。
::new
或者为你的类实现一个重载的定位new
。 - Yakk - Adam Nevraumont