使用boost :: fast_pool_allocator代替std :: allocator

时间:2014-02-25 05:37:41

标签: boost c++11 allocator

我正在尝试使用boost::fast_pool_allocator代替标准分配器,但它不起作用(具有讽刺意味的是与另一个升级库),因为fast_pool_allocator具有多个模板参数,即使它声称与std::allocator兼容,除第一个以外的所有内容都有默认值。

我试图将其作为需要单个模板参数的类模板传递。具体错误:

error: type/value mismatch at argument 3 in template parameter list for "template<class Point, template<class, class> class Container, template<class> class Allocator> class boost::geometry::model::multi_point"

error: expected a template of type "template<class> class Allocator", got "template<class T, class UserAllocator, class Mutex, unsigned int NextSize, unsigned int MaxSize> class boost::fast_pool_allocator"

有没有办法让它真正起作用?

1 个答案:

答案 0 :(得分:4)

使用以下模板代替boost::fast_pool_allocator

template <class T>
using fast_pool_allocator_t = boost::fast_pool_allocator<T>;

如果您不使用C ++ 11,这也可以。

template <class T>
struct fast_pool_allocator_t : boost::fast_pool_allocator<T>
{ };