2013-05-28 1 views
3

I에 유래와 구글에 대한 사전 검색을 해봤이에 특정 리드를 찾지 못했습니다, 그래서 난 여기가 물어 갈거야 :Boost.Function을이

는 사람이 experienece을 가지고 있습니까 사용자 정의 할당 자와 함께 boost :: function 사용?

bind에서 생성 된 함수를 사용하고 특정 크기 (어떤 params를 바인드하는지에 따라 다름)를 사용하기 때문에 boost :: function에서 힙에 할당을 시작합니다.

나는 boost/pool_alloc을 사용해야합니다. boost::fast_pool_allocator<> 또는 boost::pool_allocator<>을 지정하십시오. 수신 함수 서명은 그냥 function<void()>입니다, 간단하지만, 나는 바인딩 가능한 모든 PARAMS 다양한 결합 부위에서이 기능을 ... 그리고

가 어떻게이 pool_alloc 무엇 서명을 작성 알고를 생성 할 수 있습니다? 예컨대 : 내가 거기에 무엇을 쓰는가

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

? boost.function 문서에서 명확하지 않습니다.

어, 일부 템플릿 코드는 stackoverflow의 편집기에서 제대로 작동하지 않습니다 ... 편집기에서 다시 편집 할 수 없습니다. 내가 말할 수있는, 그것은 중요하지 않습니다에서 :(

답변

2

.이 클래스는 내부적으로 어쨌든 필요로하는 유형에 할당을 리 바인드됩니다.

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(...));