2013-11-23 4 views
1

그래서 나는 이런 식으로 뭔가를 쓸 수있는 인자의 종류와 번호를 추출하고 형 함수 포인터를 반환 할 수있는 방법을 찾기 위해 노력하고있어 인수의 개수와 유형이 정확하고 결과를 반환합니다. 그러나 어떻게 구현되어야 하는가?추출 함수 포인터 인수 및 반환 유형

저는 인터넷 검색을하고 매크로와 템플릿을 사용하여 비슷한 주제를 다루는 기사를 찾았지만 여전히 할 수 없습니다.

누군가 포인터를 제공 할 수 있습니까?

감사합니다.

P.S : VS2012에서 지원하지 않기 때문에 가변 템플릿을 사용할 수 없습니다.

답변

1

당신은 몇 가지 가변 인자 템플릿을 할 것, 무엇인가 :

template<typename TResult, typename ...TArgs> 
TResult callfunc(TResult (*fn)(TArgs...), TArgs... args) 
{ 
    /* do something with the args, if you wanted */ 
    TResult result = fn(std::forward(args)...); 
    /* do something to the return value, if you wanted */ 
    return std::forward(result); 
} 
+0

VS2012는 가변 인자 템플릿에 대한 지원하지 않습니다 ... 그것을 할 수있는 또 다른 방법이 있나요? –

+0

@TiagoCosta : 나는 다른 어떤 좋은 방법도 확신하지 못합니다. VS2012 팀은 매크로를 사용하여 여러 가지 인수로 함수 오버로드를 생성함으로써 다양한 템플릿을 에뮬레이트했습니다. 관련 블로그 게시물을 찾아보고 복사 할 수있는 예가 있는지 알아 보겠습니다. –

+1

[여기 있습니다] (http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx)'shared'와'xxshared' 헤더 파일을보고 'std :: make_shared'를위한 가짜 - 가변 매크로가 여러분의 예제와 거의 같은 방식으로 전달됩니다. 단, 프리 함수 대신 생성자에 전달된다는 점이 다릅니다. –