stackoverflow と google で予備検索を行いましたが、これに関する特定の手がかりが見つからなかったので、ここで質問します。
カスタム アロケータで boost::function を使用した経験のある人はいますか?
バインドから生成された関数を使用しているため、必要です。特定のサイズ (バインドするパラメーターによって異なります) の後、boost::function はヒープへの割り当てを開始します。
boost/pool_alloc を使用する必要があります。boost::fast_pool_allocator<>
またはboost::pool_allocator<>
具体的に。受信関数の署名は単純ですが、function<void()>
バインドするすべての可能なパラメーターを使用して、さまざまなバインディング サイトからこの関数を生成することができます...
それでは、pool_alloc にどの署名を書き込むべきかをどのように知ることができますか? 例えば:
function<void()> f_with_alloc(bind(...), pool_allocator<????>() );
そこに何を書く?boost.function のドキュメントでは明確ではありません。
ええと、一部のテンプレート コードは、stackoverflow のエディターではうまく機能しません...そして、エディターで再度編集することはできません。:(