Boost.Function与自定义分配器

时间:2013-05-28 12:44:22

标签: c++ function boost allocator

我已经在stackoverflow和google上进行了初步搜索,并没有在此找到任何特定的线索,所以我将在这里问:

有没有人有自定义分配器使用boost :: function的经验?

我需要它,因为我使用的是从bind生成的函数,并且在一定大小之后(取决于你绑定的params),boost :: function将开始在堆上分配。

我必须使用boost / pool_alloc。 boost::fast_pool_allocator<>boost::pool_allocator<>具体。接收函数签名很简单,只有function<void()>,但我可以从各种绑定站点生成此函数,并绑定所有可能的参数...

那我怎么知道为pool_alloc写什么签名? e.g:

function<void()> f_with_alloc(bind(...), pool_allocator<????>() );

我在那里写什么?在boost.function文档中还不清楚。

呃,有些模板代码与stackoverflow的编辑器不兼容......编辑器不允许我再次编辑。 :(

2 个答案:

答案 0 :(得分:2)

据我所知,这没关系。该类将在内部将您的分配器重新绑定到它所需的类型。

答案 1 :(得分:1)

在功能模板中使用function::assign()成员函数和分配器。

template <class F, class G>
void assign(F& f, G g)
{
  f.assign(g, pool_allocator<G>());
}

boost::function<void()> f;
assign(f, bind(...));