2011-02-10 3 views

답변

10

을 기본적으로 당신이 C로 전환 할 수없는 경우에도이 9

http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html#NumberOfArguments

+1

9 개 이상의 인수가있는 함수를 호출하는 경우 디자인을 다시 생각해 봐야합니다! – GrahamS

+0

@ GrahamS 나는 boost.lambda 바인드가 9까지 걸릴 것이라고 생각합니다. Boost.Spirit.Phoenix, 함수 프로그래밍을 위해 사용하는 라이브러리에는 상한을 정의하는 데 기본 10 w/매크로가 있습니다. – KitsuneYMG

+0

객체를 생성하는 데 사용 된 인수 당 템플리트가 필요한 IOC 시스템을 작성했습니다. 아마도 최대 12 개로 끝났다고 생각할 것입니다. – CashCow

3

있어 ++ 11에서는 boost :: function에서 TR1 함수로 전환하는 것을 고려해야합니다. 이는 C++ 11의 미리보기였습니다.

기본적으로 boost :: function으로 시작한 것은 C++ 표준 라이브러리의 일부가되었습니다. 요즘 variadic 템플릿으로 정의됩니다. 간단히 말해서이 (하지만 당신은 당신이 _19 넘어 뭔가를해야 할 경우 추가 자리 표시 자 변수를 정의해야 할 수도 있습니다)

하는 :: 다음

을 TR1 수 std 기능 : 부스트에서 전환 할 하드 제한이 더 이상 없다는 것을 의미합니다

#include <boost/function>#include <boost/bind> 의 모든 발행 수를 찾을 수에 의해 교체 :

#include <tr1/functional> 
using std::tr1::function; 
using std::tr1::bind; 
using std::tr1::placeholders::_1; 
using std::tr1::placeholders::_2; 
... 

이는 드롭 인 교체로 작동합니다. 나중에 C++ 11로 전환하는 경우 "tr1"부분에 을 던져주십시오.